preg_match_all('/1(.+)2/U',$str,$matches);
  print_r($matches[1]);

解决方案 »

  1.   

    <?php
    //By mrshelly
    $str="1fdsafdsa2fdsa1fdsafdsa2fdsafdsa1fdsafdsa2fdsafdsa1fdsafdsa2fdsafdsa1fdsafdsa2fdsafdsaf1fdsafdsa21fdsafds2";
    print_r(split(' ',trim(str_replace(array('1','2'),' ',$str))));
    ?>
      

  2.   

    preg_match_all('/1(.*?)2/U',$str,$matches); 
      print_r($matches[1]); 
      

  3.   

    $str="1fdsafdsa2fdsa1fdsafdsa2fdsafdsa1fdsafdsa2fdsafdsa1fdsafdsa2fdsafdsa1fdsafdsa2fdsafdsaf1fdsafdsa21fdsafds2";
    print_r(split(' ',trim(str_replace(array('1','2'),' ',$str))));
    这个不符合吧,这样会把1和1之间,2和2之间,1和2之间,2和1之间的都包括了,而不是楼主的1和2之间
    preg_match_all('/1(.+)2/U',$str,$matches); 
    print_r($matches[1]);
    这个看似可以,但如果中间有连续两个1就会截错了(x1xxx1xxx2x这样的)
    我来写一个,呵呵
    preg_match_all('/1([^1.]+)2/U',$str,$matches); 
    print_r($matches[1]);