上午写了一篇关于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:数组功效排序,可以团结下面的几个标志利用
1、PREG_PATTERN_ORDER:功效排序为$matches[0]生存完整模式的所有匹配, $matches[1] 生存第一个子组的所有匹配,以此类推。
2、REG_SET_ORDER::功效排序为$matches[0]包括第一次匹配获得的所有匹配(包括子组), $matches[1]是包括第二次匹配到的所有匹配(包括子组)的数组,以此类推。
3、PREG_OFFSET_CAPTURE: 假如这个标志被通报,每个发明的匹配返回时会增加它相对方针字符串的偏移量。
留意:PREG_PATTERN_ORDER 和 PREG_SET_ORDER 不能同时利用,假如没有指定排序的标志,则默认为 PREG_PATTERN_ORDER
offset: 凡是, 查找时从方针字符串的开始位置开始。(单元为字节)
返回值:
preg_match_all():返回完整匹配次数有大概为0,假如产生错误则返回false
php preg_match_all() 函数利用要领例1:
查找html代码中的所有p标签,并输出
<?php //飞鸟慕鱼博客 $html = "Name: <p>墨初</p> <br> Host: <p></p>"; $size = preg_match_all ("/<p>(.*)<\/p>/U", $html, $array); //输出匹配次数 echo $size; //打印所以匹配到的功效 print_r($array); ?>输出功效:
2 Array ( [0] => Array ( [0] => <p>墨初</p> [1] => <p></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></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></p> [1] => ) )留意:
1、上面的示例中指定了 preg_match_all() flags 参数值为 PREG_SET_ORDER
2、输出的 $array 数组中,第一个元素为第一次匹配到功效(包括子组),第二个元素为第二次匹配的功效(包括子组),以次类推
例3:
<?php //飞鸟慕鱼博客 $html = "Name: <p>墨初 Mochu</p> <br> Host: <p></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></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 数组中,会特另外增加匹配到的字符串相对付整个被处理惩罚字符串的偏移量