Heim  >  Artikel  >  Backend-Entwicklung  >  请问PHP用正则表达式,下面这种情况?

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

WBOY
WBOYOriginal
2016-06-23 14:22:13918Durchsuche

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

第一种:
........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,省去了非贪婪匹配,不知道会不会有什么问题,呵呵。。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:为什么没找到idNächster Artikel:帮忙看一条SQL语句了语句!