>  기사  >  백엔드 개발  >  请问PHP用正则表达式,下面这种情况?

请问PHP用正则表达式,下面这种情况?

WBOY
WBOY원래의
2016-06-23 14:22:13918검색

一个项目中可能出现以下两种情况,

第一种:
........SADFA:

     123

SLDKJLSKDFJ.........

第二种:
........SADFA:
                                                0

SLDKJLSKDFJ.........

请问大侠们,有没有办法用一个正则表达式就表示了啊?
我想的:
preg_match("/SADFA:.*?(\d+)/is",$text,$reg);
这样结果就拿到javascript:void(0)里面这个0了,
改成下面的:
preg_match("/SADFA:.*?([1-9]\d*)/is",$text,$reg);
可以拿到红色部分的数字,但是红色部分是0的话,我就没办法了,求帮忙。。。


回复讨论(解决方案)

用preg_match_all()

用preg_match_all()

第一种情况的话,我要拿第二个数字,
第二种情况的话,我要拿第一个数字,

想用一个正则,不知道怎么写啊

<?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);?>

$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:

    123
            [1] => SADFA:
                                               0
        )

    [1] => Array
        (
            [0] => 123
            [1] => 0
        )

)

感谢上面两位,从不同的思路,都可以解决问题,

由于数据量庞大,不知道strip_tags多进行一次处理,会不会影响效率,也没去试,总之感谢baoxiaohua了

个人更偏向于xuzuning版主的方法,正是我想找的,自己想一直没想出来,太感谢了

我自己最终用的/SADFA:.*?[>\s](\d+)/is,省去了非贪婪匹配,不知道会不会有什么问题,呵呵。。

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.