Php/func regex preg match all

来自菜鸟教程
跳转至:导航、​搜索

PHP preg_match_all()函数

Reg PHP RegExp参考

查找字符串中所有出现的“ 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);
}
?>

定义和用法

The preg_match_all() 函数返回在字符串中找到的模式的匹配数,并使用找到的匹配填充变量。

句法

preg_match_all(pattern, input, matches, flags, offset)

参数值

参数 描述
pattern 需要。包含一个正则表达式,指示要搜索的内容
input 需要。将在其中执行搜索的字符串
matches 可选的。此参数中使用的变量将填充一个包含所有找到的匹配项的数组
flags

可选的。一组用于更改matchs数组结构的选项。

可以选择以下结构之一:

  • PREG_PATTERN_ORDER-默认。matches数组中的每个元素都是正则表达式中相同组的匹配项数组,索引0对应于整个表达式的匹配项,其余子模式匹配项的索引。
  • PREG_SET_ORDER-匹配数组中的每个元素都包含字符串中所有找到的匹配项的所有分组的匹配项。

可以应用以下任意多个选项:

  • PREG_OFFSET_CAPTURE-启用此选项后,每个匹配项(而不是字符串)将是一个数组,其中第一个元素是包含匹配项的子字符串,第二个元素是输入中子字符串的第一个字符的位置。
  • PREG_UNMATCHED_AS_NULL-启用此选项时,不匹配的子模式将以NULL而不是空字符串的形式返回。
offset 可选的。预设为0。指示开始搜索到字符串的距离。preg_match()函数将找不到在此参数给定位置之前发生的匹配项

技术细节

返回值: 返回找到的匹配数;如果发生错误,则返回false
PHP版本: 4+
更新日志: PHP 7.2-添加了PREG_UNMATCHED_AS_NULL标志


PHP 5.4-匹配参数变为可选

PHP 5.3.6-当偏移量大于输入长度时,该函数返回false

PHP 5.2.2-命名子模式可以使用(?'name')和(?除了前面的(?P <name>)语法之外的<name>)语法

更多例子

使用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);
}
?>

Reg PHP RegExp参考