preg_match与preg_match_all区别

定义:

preg_match_all:从左边开始一直到尾部,找出所有匹配的字符串。匹配结果$matches为二维数组,$matches[0]是匹配到的完整结果,$matches[1]是匹配到完整结果的字组。


preg_match:从左边开始,匹配到第一个符合字符串后停止匹配。匹配结果$matches为一维数组,$matches[0]是匹配到的完整结果,$matches[1]是匹配到完整结果的字组。

示例1:

$str = "Name: <b>PHP</b> <br> Title: <b>Programming Language</b>";
preg_match_all ("/<b>(.*)<\/b>/", $str, $matches);
print_r($matches);
//返回
preg_match_all:
Array
(
    [0] => Array
        (
            [0] => <b>PHP</b> <br> Title: <b>Programming Language</b>
        )

    [1] => Array
        (
            [0] => PHP</b> <br> Title: <b>Programming Language
        )

)
preg_match:
Array
(
    [0] => <b>PHP</b> <br> Title: <b>Programming Language</b>
    [1] => PHP</b> <br> Title: <b>Programming Language
)

说明:{m,n}、{m,}、?、*、+这类数量修饰符默认会使用贪婪匹配尽可能多的匹配。可在后面增加?符号来使用惰性匹配,比如+?;另外也可用U修饰符达到相同结果,参照示例2。

示例2:

$str = "Name: <b>PHP</b> <br> Title: <b>Programming Language</b>";
preg_match_all ("/<b>(.*)<\/b>/U", $str, $matches);
print_r($matches);
//返回
preg_match_all:
Array
(
    [0] => Array
        (
            [0] => <b>PHP</b>
            [1] => <b>Programming Language</b>
        )

    [1] => Array
        (
            [0] => PHP
            [1] => Programming Language
        )

)
preg_match:
Array
(
    [0] => <b>PHP</b>
    [1] => PHP
)

说明:当贪婪匹配时,preg_match_all的$matches[0]与$matches[1]结果只有一个;惰性匹配时,可能存在多个。

示例3:

preg_match_all( "/(\w)+/" , "abc" , $matches);
print_r($matches);
//返回
preg_match_all:
Array
(
    [0] => Array
        (
            [0] => abc
        )

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

)
preg_match:
Array
(
    [0] => abc
    [1] => c
)

说明:因为数量修饰符为+属于贪婪匹配,会尽可能多的匹配,所以完整匹配结果为abc;子组为(\w),只能为单个字符,所以子组的匹配结果为c。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值