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 的数字范围内的字符。 |
元字符
元字符是具有特殊含义的字符
元字符 | 描述 |
---|---|
| | 匹配由 | 分隔的任何一个模式,例如:cat|dog|fish |
. | 查找任何字符的单个实例。 |
^ | 匹配字符串的开头,例如:^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 = '/\?+/';