PHP 教程

PHP 教程 PHP 简介 PHP 下载安装 PHP 语法 PHP 注释 PHP 变量 PHP Echo / Print PHP 数据类型 PHP 字符串 PHP 数值 PHP Math PHP 常量 PHP 运算符 PHP If...Else...Elseif PHP Switch PHP 循环 PHP 函数 PHP 数组 PHP 全局变量 PHP 正则表达式

PHP 表单

PHP 表单处理 PHP 表单验证 PHP 表单验证必填字段 PHP 表单验证URL/E-mail PHP 表单验证实例

PHP 高级教程

PHP 日期和时间 PHP Include PHP 文件处理 PHP 文件打开/读取 PHP 文件创建/写入 PHP 文件上传 PHP Cookies PHP Sessions PHP Filters PHP Filters Advanced PHP 回调函数 PHP JSON PHP 异常处理

PHP 面向对象

PHP 什么是 OOP PHP 类和对象 PHP 构造函数 PHP 析构函数 PHP 访问修饰符 PHP 继承 PHP 类常量 PHP 抽象类 PHP 接口 PHP 特征 PHP 静态方法 PHP 静态属性 PHP 命名空间 PHP 可迭代对象

MySQL 数据库

MySQL Database MySQL Connect MySQL Create DB MySQL Create Table MySQL Insert Data MySQL Get Last ID MySQL Insert Multiple MySQL Prepared MySQL Select Data MySQL Where MySQL Order By MySQL Delete Data MySQL Update Data MySQL Limit Data

PHP XML

PHP XML Parsers PHP SimpleXML Parser PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX Intro AJAX PHP AJAX Database AJAX XML AJAX Live Search AJAX Poll

PHP 实例

PHP 实例 PHP 编译器 PHP 测验 PHP 练习

PHP 参考手册

PHP 概述 PHP Array PHP Calendar PHP Date PHP Directory PHP Error PHP Exception PHP Filesystem PHP Filter PHP FTP PHP JSON PHP Keywords PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP Network PHP Output Control PHP RegEx PHP SimpleXML PHP Stream PHP String PHP Variable Handling PHP XML Parser PHP Zip PHP Timezones

PHP preg_match_all() 函数

❮ PHP 正则表达式参考

实例

查找字符串中所有出现的"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);
}
?>
亲自试一试 »

定义和用法

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


语法

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

参数值

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

可以选择以下结构之一:
  • 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 - 除了之前的 (?P<name>) 之外,命名子模式还可以使用 (?'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);
}
?>
亲自试一试 »

❮ PHP 正则表达式参考