求一段正则匹配
id="sogou_54999_2">春秋撒旦航空</a></td>
id="sogou_99899_8">春秋的撒旦航空</a></td>
id="sogou_95899_6">春问秋</a></td>
id="sogou_99999_21">春秋航婉儿站</a></td>
id="sogou_99129_23">春秋官方网站</a></td>求preg_match_all 正则匹配id="sogou_99129_23">这个里面的文字</a></td>其中sogou_这个数字不固定_这个数字也不固定

解决方案 »

  1.   

    $temp='aksid="sogou_54999_2">cccdjfkajid="sogou_54999_22">assdjf';
    $preg='#(?<=id="sogou_\d{5}_\d{1}")(.*)(?=)#iUs';
    $preg2='#(?<=id="sogou_\d{5}_\d{2}")(.*)(?=)#iUs';
    preg_match($preg,$temp,$arr);
    preg_match($preg2,$temp,$arr2);
    print_r($arr);
    print_r($arr2);php的?<=不支持+,*,{1,}啦等等不固定宽的正则式。
    希望楼下有更好的答案。。我这个太搓了
      

  2.   

    用个非贪婪模式吧……<?php 
    $str = 'id="sogou_54999_2">春秋撒旦航空</a></td>
    id="sogou_99899_8">春秋的撒旦航空</a></td>
    id="sogou_95899_6">春问秋</a></td>
    id="sogou_99999_21">春秋航婉儿站</a></td>
    id="sogou_99129_23">春秋官方网站</a></td>';preg_match_all('/id="sogou_\d+_\d+">(.*?)<\/a><\/td>/', $str, $matches);
    var_dump($matches[1]);
    ?>