PHP preg_match_all() 函数
定义和用法
preg_match_all()
函数返回在字符串中找到的模式的匹配数,并用找到的匹配填充变量。
实例
例子 1
查找字符串中所有 "ain" 的出现:
<?php
$str = "The rain in SPAIN falls mainly on the plains.";
$pattern = "/ain/i";
if(preg_match_all($pattern, $str, $matches)) {
print_r($matches);
}
?>
例子 2
使用 PREG_PATTERN_ORDER 设置 matches 数组的结构。在此例中,matches 数组中的每个元素都有正则表达式分组之一的所有匹配项。
<?php
$str = "abc ABC";
$pattern = "/((a)b)(c)/i";
if(preg_match_all($pattern, $str, $matches, PREG_PATTERN_ORDER)) {
print_r($matches);
}
?>
语法
preg_match_all(pattern, input, matches, flags, offset)
参数 | 描述 |
---|---|
pattern | 必需的。包含要搜索的正则表达式。 |
input | 必需的。要在其中进行搜索的字符串。 |
matches | 选修的。此参数中使用的变量将填充一个数组,其中包含找到的所有匹配项。 |
flags |
选修的。一组选项,用于更改 matches 数组的结构。 可以选择以下结构之一:
可以应用以下选项中的任意数量:
|
offset |
选修的。默认为 0。指示从字符串的哪个位置开始搜索。 preg_match() 函数不会找到在此参数给定位置之前出现的匹配项。 |
技术细节
返回值: | 返回找到的匹配项数量,如果发生错误则返回 false。 |
---|---|
PHP 版本: | 4+ |
PHP 更新日志:
PHP 7.2 - 添加了 PREG_UNMATCHED_AS_NULL 标志。
PHP 5.4 - matches 参数变为可选。
PHP 5.3.6 - 当偏移量超过输入长度时,函数返回 false。
PHP 5.2.2 - 除了之前的 (?P<name>) 语法外,命名子模式还可以使用 (?'name') 和 (? <name>) 语法。