PHP 正则表达式函数

PHP 正则表达式简介

正则表达式允许您在字符串中搜索和替换模式。

安装

PHP 正则表达式函数是 PHP 核心的一部分。无需安装即可使用这些安装。

运行时配置

php.ini 中的这些设置可用于限制计算正则表达式时使用的时间或资源。

名称 默认值 描述 可更改
pcre.backtrack_limit "1000000"

正则表达式引擎在计算表达式时允许执行的最大回溯次数。

(自 PHP 5.2 起可用)

PHP_INI_ALL
pcre.recursion_limit "100000"

正则表达式引擎在计算表达式时允许达到的最大递归深度。

(自 PHP 5.2 起可用)

PHP_INI_ALL
pcre.jit "1"

当设置为"1"时,启用PCRE(Perl兼容正则表达式)的即时编译。

(自 PHP 7.0 起可用)

PHP_INI_ALL

PHP 正则表达式函数

函数 描述
preg_filter() 返回已替换模式匹配项的字符串或数组,但前提是找到匹配项。
preg_grep() 返回数组,其中仅包含输入数组中匹配模式的元素。
preg_last_error() 返回错误代码,指示最近的正则表达式调用失败的原因。
preg_match() 在字符串中查找模式的第一个匹配项。
preg_match_all() 在字符串中查找模式的所有匹配项。
preg_replace() 返回字符串,其中模式的匹配项被替换为给定字符串中的子字符串。
preg_replace_callback() 给定表达式和回调,返回字符串,其中表达式的所有匹配项都被替换为回调函数返回的子字符串。
preg_replace_callback_array() 给定将表达式与回调函数关联的数组,返回字符串,其中每个表达式的所有匹配项都替换为回调函数返回的子字符串。
preg_split() 使用正则表达式的匹配项作为分隔符将字符串拆分为数组。
preg_quote() 通过在正则表达式中添加反斜杠来转义在正则表达式中具有特殊含义的字符。

正则表达式修饰符

修饰符可以改变搜索的执行方式。

修饰符 描述
i 执行不区分大小写的搜索。
m 执行多行搜索(搜索字符串开头或结尾的模式将匹配每行的开头或结尾)。
u 启用 UTF-8 编码模式的正确匹配。

正则表达式模式

方括号用于查找一系列字符:

表达式 描述
[abc] 查找方括号内选项中的任意一个字符。
[^abc] 查找不在方括号内的任意字符。
[0-9] 查找从 0 到 9 的任意一个数字字符。

元字符

元字符是具有特殊含义的字符:

元字符 描述
| 查找由 | 分隔的任一模式的匹配项,如:猫|狗|鱼
. 查找任意一个字符的单个实例
^ 查找位于字符串开头的匹配项,如:^Hello
$ 查找位于字符串结尾的匹配项,如:World$
\d 查找一个数字。
\s 查找一个空白字符。
\b 查找位于单词开头的匹配项,如:\bWORD,或位于单词结尾的匹配项,如:WORD\b。
\uxxxx 查找由十六进制数 xxxx 指定的 Unicode 字符。

量词

量词定义数量:

量词 描述
n+ 匹配包含至少一个 n 的任意字符串。
n* 匹配包含零个或多个 n 的任意字符串。
n? 匹配包含零个或一个 n 的任意字符串。
n{x} 匹配包含 x 个 n 的序列的任意字符串。
n{x,y} 匹配包含从 x 到 y 个 n 的序列的任意字符串。
n{x,} 匹配包含至少 x 个 n 的序列的任意字符串。

注意:

如果您的表达式需要搜索特殊字符之一,您可以使用反斜杠 (\) 来转义它们。

例如,要搜索一个或多个问号,您可以使用以下表达式:

$pattern = '/\?+/';