升级补丁
php中preg_match_all()怎么用-PHP问题
来源:祺点源码论坛     阅读:62
网站管理员
发布于 2024-09-18 06:26
查看主页
php中,preg_match_all()函数用于执行一个全局正则表达式匹配,可以搜索字符串中所有可以和正则表达式匹配的结果,语法“preg_match_all(pattern,subject,matches,flags,offset)”。

本教程操作环境:windows7系统、PHP7.1版,DELL G3电脑

preg_match_all()函数可以搜索字符串中所有可以和正则表达式匹配的结果,语法格式如下:

preg_match_all(pattern,subject,matches,flags,offset)登录后复制

参数说明如下:

pattern:要搜索的模式,也就是定义好的正则表达式;subject:要搜索的字符串;matches:可选参数(多维数组),用来存放所有匹配的结果, 数组排序通过 $flags 指定;flags:可选参数,可以结合下面几个标记使用(注意不能同时使用 PREG_PATTERN_ORDER 和 PREG_SET_ORDER):PREG_PATTERN_ORDER:结果排序为 $matches[0] 保存完整模式的所有匹配,$matches[1] 保存第一个子组的所有匹配,以此类推。PREG_SET_ORDER:结果排序为 $matches[0] 包含第一次匹配得到的所有匹配(包含子组), $matches[1] 是包含第二次匹配到的所有匹配(包含子组)的数组,以此类推。PREG_OFFSET_CAPTURE:如果这个标记被传递,每个发现的匹配返回时会增加它相对目标字符串的偏移量。注意这会改变 $matches 中的每一个匹配结果字符串元素,使其成为一个第 0 个元素为匹配结果字符串,第 1 个元素为匹配结果字符串在 subject 中的偏移量。offset:可选参数,$offset 用于从目标字符串中指定位置开始搜索(单位是字节)。

preg_match_all() 函数可以返回 pattern 的匹配次数(可能是 0),如果发生错误则返回 FALSE。

立即学习“PHP免费学习笔记(深入)”;

示例1:使用 preg_match_all() 函数匹配一个字符串。

<?php $subject = "abcdefghijkdefabcedfdefxyzdef"; $pattern_1 = &#39;/(def)(abc)/&#39;; $num_1 = preg_match_all($pattern_1, $subject, $matches_1,PREG_PATTERN_ORDER); echo "<pre class="brush:php;toolbar:false">"; var_dump($matches_1); var_dump($num_1); $pattern_2 = &#39;/(def)(abc)/&#39;; $num_2 = preg_match_all($pattern_2, $subject, $matches_2,PREG_OFFSET_CAPTURE, 3); var_dump($matches_2); var_dump($num_2);?>登录后复制

运行结果如下:

array(3) { [0]=>array(1) { [0]=>string(6) "defabc" } [1]=>array(1) { [0]=>string(3) "def" } [2]=>array(1) { [0]=>string(3) "abc" }}int(1)array(3) { [0]=>array(1) { [0]=>array(2) { [0]=>string(6) "defabc" [1]=>int(11) } } [1]=>array(1) { [0]=>array(2) { [0]=>string(3) "def" [1]=>int(11) } } [2]=>array(1) { [0]=>array(2) { [0]=>string(3) "abc" [1]=>int(14) } }}int(1)登录后复制

示例2:查找匹配的HTML标签(贪婪):

<?php//\2是一个后向引用的示例. 这会告诉pcre它必须匹配正则表达式中第二个圆括号(这里是([w]+))//匹配到的结果. 这里使用两个反斜线是因为这里使用了双引号.$html = "<b>bold text</b><a href=howdy.html>click me</a>"; preg_match_all("/(<([w]+)[^>]*>)(.*?)(</\2>)/", $html, $matches, PREG_SET_ORDER); foreach ($matches as $val) { echo "matched: " . $val[0] . " "; echo "part 1: " . $val[1] . " "; echo "part 2: " . $val[2] . " "; echo "part 3: " . $val[3] . " "; echo "part 4: " . $val[4] . " ";}?>登录后复制

执行结果如下所示:

matched: <b>bold text</b>part 1: <b>part 2: bpart 3: bold textpart 4: </b>matched: <a href=howdy.html>click me</a>part 1: <a href=howdy.html>part 2: apart 3: click mepart 4: </a>登录后复制

推荐学习:《PHP视频教程》

以上就是php中preg_match_all()怎么用的详细内容!

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 升级补丁
相关推荐
孙杨事件终身禁赛是什么原因-常见问题
安卓首款!荣耀Magic V3双卫星版开售:11199元-手机新闻
java框架中并发编程的注意事项是什么?-java教程
java框架如何利用负载均衡技术提升云原生应用程序的可用性?-java教程
九号出行在哪清理数据 九号出行清理数据方法-手机软件

首页

消息

购物车

我的