Home > Article > Backend Development > 求一个判断数组值在字符串中出现的顺序
数组
$arr=array('A','M','N');
字符串不定,但是M和N在字符串中只能出现一次,如果出现多次则返回false
符合要求则返回数组$data['M'],$data['N']
比如:
A MAN 返回 2,4 //M为数组中第2个出现,N为数组中第4个出现 (A出现在1和3)
A BOY 返回 false //不含M或者N
MAN 返回1,3 //M为数组中第1个出现,N为数组中第3个出现 (A出现在2)
A ATM IN 返回 3,5 //M为数组中第3个出现,N为数组中第4个出现 (A出现在1和2)
本来一个简单的问题,被你已解释变得复杂了
开看这段代码的结果就知道该怎么做了
$arr = array('A','M','N');$data = array( 'A MAN', 'A BOY', 'MAN', 'A ATM IN');foreach($data as $text) { $t = str_split($text); $r[] = array_intersect($t, $arr);}print_r($r);
Array( [0] => Array ( [0] => A [2] => M [3] => A [4] => N ) [1] => Array ( [0] => A ) [2] => Array ( [0] => M [1] => A [2] => N ) [3] => Array ( [0] => A [2] => A [4] => M [7] => N ))
本来一个简单的问题,被你已解释变得复杂了
开看这段代码的结果就知道该怎么做了
$arr = array('A','M','N');$data = array( 'A MAN', 'A BOY', 'MAN', 'A ATM IN');foreach($data as $text) { $t = str_split($text); $r[] = array_intersect($t, $arr);}print_r($r);
Array( [0] => Array ( [0] => A [2] => M [3] => A [4] => N ) [1] => Array ( [0] => A ) [2] => Array ( [0] => M [1] => A [2] => N ) [3] => Array ( [0] => A [2] => A [4] => M [7] => N ))
$arr = array('(title)','(url)','(img)');$str = '<li><a href="(url)" title="(title)" ><img src=(img) / alt="求一个判断数组值在字符串中出现的顺序" ></a></li>';
$str = '<li><a href="(url)" title="(title)" >(title)<img src=(img) / alt="求一个判断数组值在字符串中出现的顺序" ></a></li>';
$arr = array('A','M','N');
$str = 'AMN';
$data = array();
foreach($arr as $v){
if(substr_count($str,$v) == 1){
$data[$v] = strpos($str,$v);
}
}
var_dump($data);
$arr = array('A','M','N');
$str = 'AMN';
$data = array();
foreach($arr as $v){
if(substr_count($str,$v) == 1){
$data[$v] = strpos($str,$v);
}
}
var_dump($data);
$arr = array('A','M','N');
$str = 'AMN';
$data = array();
foreach($arr as $v){
if(substr_count($str,$v) == 1){
$data[$v] = strpos($str,$v);
}
}
var_dump($data);
$arr = array('A','M','N');
$str = 'AMN';
$data = array();
foreach($arr as $v){
if(substr_count($str,$v) == 1){
$data[$v] = strpos($str,$v);
}
}
var_dump($data);
群星演唱会来了三个大歌手和一堆小歌星。
大歌星分别是:刘德华,张学友,林俊杰
举办方安排了出场顺序,林俊杰年轻点多唱了几首,其他两个没精力只唱了一首。
张学友,XXX,XXX,林俊杰,XXX,林俊杰,XXX,XXX,刘德华,XXX,林俊杰XXX
我现在需要排的是 他们三人的出场顺序
结果应该是林俊杰 2,3,5
张学友1
刘德华4
不知道这样解释清楚了没有。
$arr = array('A','M','N');$str = 'AMTN';$data = array();foreach($arr as $v){ if(substr_count($str,$v) == 1){ $data[$v] = strpos($str,$v)+1; }}var_dump($data);
$arr = array('A','M','N');$str = 'AMTN';$data = array();foreach($arr as $v){ if(substr_count($str,$v) == 1){ $data[$v] = strpos($str,$v)+1; }}var_dump($data);
搞定了,用正则匹配出的。唉!~
$arr = array('(title)','(url)','(img)'); $str = '<li><a href="(url)" title="(title)" ><img src=(img) / alt="求一个判断数组值在字符串中出现的顺序" >(title)</a></li>'; preg_match_all('/(\(title\)|\(url\)|\(img\))/i',$str,$data); print_r($data);