一个项目中可能出现以下两种情况,第一种:
........SADFA:    <a id="J_WSAD" href="javascript:void(0)">123</a>SLDKJLSKDFJ.........第二种:
........SADFA:
                                               0SLDKJLSKDFJ.........请问大侠们,有没有办法用一个正则表达式就表示了啊?
我想的:
preg_match("/SADFA:.*?(\d+)/is",$text,$reg);
这样结果就拿到javascript:void(0)里面这个0了,
改成下面的:
preg_match("/SADFA:.*?([1-9]\d*)/is",$text,$reg);
可以拿到红色部分的数字,但是红色部分是0的话,我就没办法了,求帮忙

解决方案 »

  1.   

    <?php
    $s1='........SADFA <a id="J_WSAD" href="javascript:void(a10)">123</a>SLDKJLSKDFJ.........';
    $s1=strip_tags($s1);
    preg_match_all("/\d+/",$s1,$reg);
    print_r($reg);
    ?>
      

  2.   

    $s =<<< TXT
    第一种:
    ........SADFA:    <a id="J_WSAD" href="javascript:void(0)">123</a>SLDKJLSKDFJ.........第二种:
    ........SADFA:
                                                   0SLDKJLSKDFJ.........
    TXT;
    preg_match_all('/SADFA:.+[>\s](\d+)\b/sU', $s, $r);
    print_r($r);Array
    (
        [0] => Array
            (
                [0] => SADFA:    <a id="J_WSAD" href="javascript:void(0)">123
                [1] => SADFA:
                                                   0
            )    [1] => Array
            (
                [0] => 123
                [1] => 0
            ))
      

  3.   

    感谢上面两位,从不同的思路,都可以解决问题,由于数据量庞大,不知道strip_tags多进行一次处理,会不会影响效率,也没去试,总之感谢baoxiaohua了个人更偏向于xuzuning版主的方法,正是我想找的,自己想一直没想出来,太感谢了我自己最终用的/SADFA:.*?[>\s](\d+)/is,省去了非贪婪匹配,不知道会不会有什么问题,呵呵。。