解决方案 »

  1. cvm
  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
            ))
      

  3.  
    多谢版主热心解答。
    但 不是这个意思,你的代码显示出来的结果不是我要的结果,
    数组前三个结果正确,是因为结果凑巧,第四个返回就是错误的。
    可能是我表达比较混乱。
    $arr = array('(title)','(url)','(img)');
    $str = '<li><a href="(url)" title="(title)" ><img src=(img) /></a></li>';我现在要得到的是 (title是第2个出现),url是第1个出现  img是第3个出现。
    而下面的字符串$str = '<li><a href="(url)"  title="(title)" >(title)<img src=(img) /></a></li>';我现在要得到的是 (title是第2,3个出现),url是第1个出现  img是第4个出现。
      

  4. $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);
      

  5. 如果$str = 'AMTN'就会出错啦
      

  6. 如果$str = 'AMTN'就会出错啦没出错啊
    array(3) { ["A"]=> int(0) ["M"]=> int(1) ["N"]=> int(3) }
      

  7. 如果$str = 'AMTN'就会出错啦没出错啊
    array(3) { ["A"]=> int(0) ["M"]=> int(1) ["N"]=> int(3) }
    M是第二出场,结果1,N是第3个出场,应该是2才对。
      

  8. 群星演唱会来了三个大歌手和一堆小歌星。
    大歌星分别是:刘德华,张学友,林俊杰
    举办方安排了出场顺序,林俊杰年轻点多唱了几首,其他两个没精力只唱了一首。
    张学友,XXX,XXX,林俊杰,XXX,林俊杰,XXX,XXX,刘德华,XXX,林俊杰XXX
    我现在需要排的是 他们三人的出场顺序
    结果应该是林俊杰 2,3,5
    张学友1
    刘德华4
    不知道这样解释清楚了没有。
      


  9. $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);
    结果array(3) { ["A"]=> int(1) ["M"]=> int(2) ["N"]=> int(4) }
      

  10. 我要的结果N是3
    只统计 AMN的顺序 倒是你个了我思路,我把数组键和值反转一下,看能不能得到结果。
      

  11. 搞定了,用正则匹配出的。唉!~$arr = array('(title)','(url)','(img)');
    $str = '<li><a href="(url)" title="(title)" ><img src=(img) />(title)</a></li>';
    preg_match_all('/(\(title\)|\(url\)|\(img\))/i',$str,$data);
    print_r($data);