您的位置 首页 php

php preg_match_all()函数介绍与用法

昨天写了一篇关于php过滤特殊字符并保留中文,数字以及英文字母的文章,其中就用到了php中的预设函数 preg_match_all(),今天就有小伙件发私信说,能不能简单介绍一下这个 preg_match_all() 函数。查了一些资料,并写成了这篇文章

php preg_match_all() 函数

preg_match_all():用于执行一个全局正则表达式匹配。

语法:

int preg_match_all (pattern , subject ,matches, flags ,offset);
 

参数:

pattern::要搜索的模式, 字符串 形式。

subject:输入字符串。

matches:多维数组,作为输出参数输出所有匹配结果, 数组排序通过flags指定。

flags:数组结果排序,可以结合下面的几个标记使用

offset: 通常, 查找时从目标字符串的开始位置开始。(单位为字节)

返回值:

preg_match_all():返回完整匹配次数有可能为0,如果发生错误则返回false

php preg_match_all() 函数使用方法

例1:

查找 html代码 中的所有p标签,并输出

<?php
//飞鸟慕鱼博客
$html = "Name: <p>墨初</p> <br> Host: <p>";
$size = preg_match_all ("/<p>(.*)<\/p>/U", $html, $array);
//输出匹配次数
echo $size;
//打印所以匹配到的结果
print_r($array);
?>
 

输出结果:

2
Array
(
 [0] => Array
 (
 [0] => <p>墨初</p>
 [1] => <p>
 )
 [1] => Array
 (
 [0] => 墨初
 [1] => 
 )
)
 

注意:

1、上面的示例中没有指定了 preg_match_all() flags 参数,则默认为 PREG_PATTERN_ORDER

2、输出的 $array 数组中,$array[0]保存完整模式的所有匹配, $array[1] 保存第一个子组的所有匹配

例2:

<?php
//飞鸟慕鱼博客
$html = "Name: <p>墨初 Mochu</p> <br> Host: <p>";
$size = preg_match_all ("/<p>(.*)<\/p>/U",$html,$array,PREG_SET_ORDER);
print_r($array);
?>
 

输出结果:

Array
(
 [0] => Array
 (
 [0] => <p>墨初 Mochu</p>
 [1] => 墨初 Mochu
 )
 [1] => Array
 (
 [0] => <p>
 [1] => 
 )
)
 

注意:

1、上面的示例中指定了 preg_match_all() flags 参数值为 PREG_SET_ORDER

2、输出的 $array 数组中,第一个元素为第一次匹配到结果(包含子组),第二个元素为第二次匹配的结果(包含子组),以次类推

例3:

<?php
//飞鸟慕鱼博客
$html = "Name: <p>墨初 Mochu</p> <br> Host: <p>";
$size = preg_match_all ("/<p>(.*)<\/p>/U",$html,$array,PREG_OFFSET_CAPTURE);
print_r($array);
?>
 

输出结果:

Array
(
 [0] => Array
 (
 [0] => Array
 (
 [0] => <p>墨初 Mochu</p>
 [1] => 6
 )
 [1] => Array
 (
 [0] => <p>
 [1] => 37
 )
 )
 [1] => Array
 (
 [0] => Array
 (
 [0] => 墨初 Mochu
 [1] => 9
 )
 [1] => Array
 (
 [0] => 
 [1] => 40
 )
 )
)
 

注意:

1、上面的示例中指定了 preg_match_all() flags 参数值为 PREG_OFFSET_CAPTURE

2、输出的 $array 数组中,会额外的增加匹配到的字符串相对于整个被处理字符串的偏移量

文章来源:智云一二三科技

文章标题:php preg_match_all()函数介绍与用法

文章地址:https://www.zhihuclub.com/150775.shtml

关于作者: 智云科技

热门文章

网站地图