站三界导航
首页 TP代码preg_match与preg_match_all区别

preg_match与preg_match_all区别

  • TP代码
  • 来源:站三界导航
  • 46阅读
  • 2023-03-17

定义:

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。

本文结束
本文来自投稿,不代表站三界导航立场,如若转载,请注明出处:https://www.zhansanjie.com/article/details/40300.html

版权声明:

1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。

2、本站仅提供信息发布平台,不承担相关法律责任。

3、若侵犯您的版权或隐私,请联系本站管理员删除。

4、本文由会员转载自互联网,如果您是文章原创作者,请联系本站注明您的版权信息。

分享
站三界导航
本站声明:本站严格遵守国家相关法律规定,非正规网站一概不予收录。本站所有资料取之于互联网,任何公司或个人参考使用本资料请自辨真伪、后果自负,站三界导航不承担任何责任。在此特别感谢您对站三界导航的支持与厚爱。