在 PHP 中还有一个和 preg_match() 函数极为类似的函数——preg_match_all(),该函数可以搜索字符串中所有可以和正则表达式匹配的结果,语法格式如下:
preg_match_all($pattern, $subject [, &$matches [, $flags = PREG_PATTERN_ORDER [, $offset = 0 ]]])
参数说明如下:
preg_match_all() 函数可以返回 $pattern 的匹配次数(可能是 0),如果发生错误则返回 FALSE。
【示例】使用 preg_match_all() 函数匹配一个字符串。
<?php $subject = "abcdefghijkdefabcedfdefxyzdef"; $pattern_1 = '/(def)(abc)/'; $num_1 = preg_match_all($pattern_1, $subject, $matches_1,PREG_PATTERN_ORDER); echo "<pre>"; var_dump($matches_1); var_dump($num_1); $pattern_2 = '/(def)(abc)/'; $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)
更多...
加载中...