Home > Backend Development > PHP Tutorial > 请问PHP用正则表达式,下面这种情况?

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

WBOY
Release: 2016-06-23 14:22:13
Original
946 people have browsed it

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

第一种:
........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);?>
Copy after login

$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);
Copy after login
Array
(
    [0] => Array
        (
            [0] => SADFA:

    123
            [1] => SADFA:
                                               0
        )

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

)

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

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

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

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

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template