目录

PHP 正则表达式函数


PHP正则表达式简介

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


安装

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


运行时配置

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

Name Default Description Changeable
pcre.backtrack_limit "1000000" The maximum number of backtracks that the regular expression engine is allowed to do while evaluating an expression. (available since PHP 5.2) PHP_INI_ALL
pcre.recursion_limit "100000" The maximum recursion depth that the regular expression engine is permitted to reach while evaluating an expression. (available since PHP 5.2) PHP_INI_ALL
pcre.jit "1" When set to "1" this enables PCRE's (Perl-Compatible Regular Expressions) just-in-time compilation. (available since PHP 7.0) PHP_INI_ALL

PHP 正则表达式函数

Function Description
preg_filter() Returns a string or an array with pattern matches replaced, but only if matches were found
preg_grep() Returns an array consisting only of elements from the input array which matched the pattern
preg_last_error() Returns an error code indicating the reason that the most recent regular expression call failed
preg_match() Finds the first match of a pattern in a string
preg_match_all() Finds all matches of a pattern in a string
preg_replace() Returns a string where matches of a pattern (or an array of patterns) are replaced with a substring (or an array of substrings) in a given string
preg_replace_callback() Given an expression and a callback, returns a string where all matches of the expression are replaced with the substring returned by the callback
preg_replace_callback_array() Given an array associating expressions with callbacks, returns a string where all matches of each expression are replaced with the substring returned by the callback
preg_split() Breaks a string into an array using matches of a regular expression as separators
preg_quote() Escapes characters that have a special meaning in regular expressions by putting a backslash in front of them

正则表达式修饰符

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

Modifier Description
i Performs a case-insensitive search
m Performs a multiline search (patterns that search for the beginning or end of a string will match the beginning or end of each line)
u Enables correct matching of UTF-8 encoded patterns

正则表达式模式

括号用于查找字符范围:

Expression Description
[abc] Find one character from the options between the brackets
[^abc] Find any character NOT between the brackets
[0-9] Find one character from the range 0 to 9

元字符

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

Metacharacter Description
| Find a match for any one of the patterns separated by | as in: cat|dog|fish
. Find just one instance of any character
^ Finds a match as the beginning of a string as in: ^Hello
$ Finds a match at the end of the string as in: World$
\d Find a digit
\s Find a whitespace character
\b Find a match at the beginning of a word like this: \bWORD, or at the end of a word like this: WORD\b
\uxxxx Find the Unicode character specified by the hexadecimal number xxxx

量词

量词定义数量:

Quantifier Description
n+ Matches any string that contains at least one n
n* Matches any string that contains zero or more occurrences of n
n? Matches any string that contains zero or one occurrences of n
n{x} Matches any string that contains a sequence of X n's
n{x,y} Matches any string that contains a sequence of X to Y n's
n{x,} Matches any string that contains a sequence of at least X n's

笔记:如果您的表达式需要搜索特殊字符之一,您可以使用反斜杠 (\) 来转义它们。例如,要搜索一个或多个问号,您可以使用以下表达式:$pattern = '/\?+/';