PCRE - 正则表达式(Perl 兼容)库是一组函数,可让您实现正则表达式模式匹配。这些函数中使用的模式语法与 Perl 非常相似。
安装
使用这些函数无需安装。这些函数是 PHP 核心的一部分。
运行时配置
这些函数的行为受 php.ini 中的设置影响。
PCRE 配置选项
名称 | 默认 | 描述 | 可更改 |
---|---|---|---|
pcre.backtrack_limit | "1000000" | PCRE的回溯限制。 PHP < 5.3.7 默认为 100000。 | PHP_INI_ALL |
pcre.recursion_limit | "100000" | PCRE 的递归限制。请注意,如果设置为较高的数字,它可能会消耗所有可用的进程堆栈并最终使 PHP 崩溃(由于达到操作系统施加的堆栈大小限制)。 | PHP_INI_ALL |
pcre.jit | "1" | 设置为"1"时启用 PCRE 的即时编译。 | PHP_INI_ALL |
PHP 正则表达式函数
函数 | 描述 |
---|---|
preg_filter() | 执行正则表达式搜索并替换。 |
preg_grep() | 返回与模式匹配的数组条目。 |
preg_last_error_msg() | 返回最后一次 PCRE 正则表达式执行的错误消息。 |
preg_last_error() | 返回最后一次 PCRE 正则表达式执行的错误代码。 |
preg_quote() | 引用正则表达式字符。 |
preg_replace() | 执行正则表达式搜索和替换。 |
preg_split() | 分割字符串正则表达式。 |
PHP 正则表达式预定义常量
以下常量由此扩展定义,并且仅可用当扩展已编译为 PHP 或在运行时动态加载时。
常量 | 描述 | 截至 |
---|---|---|
PREG_PATTERN_ORDER | 对结果进行排序,以便 $matches[0] 是完整模式匹配的数组,$matches[1] 是第一个括号匹配的字符串数组子模式等。该标志仅与 preg_match_all() 一起使用。 | |
PREG_SET_ORDER | 对结果进行排序,以便 $matches[0] 是第一组匹配的数组, $matches[1] 是第二组匹配的数组,依此类推。该标志仅与 preg_match_all() 一起使用。 | |
PREG_OFFSET_CAPTURE | 请参阅 PREG_SPLIT_OFFSET_CAPTURE 的说明。 | |
PREG_SPLIT_NO_EMPTY | 此标志告诉 preg_split( ) 仅返回非空片段。 | |
PREG_SPLIT_DELIM_CAPTURE | 此标志告诉 preg_split() 也可以捕获分隔符模式中的括号表达式。 | |
PREG_SPLIT_OFFSET_CAPTURE | 如果设置此标志,则对于每个出现的匹配,还将返回附加字符串偏移量。请注意,这会更改数组中的返回值,其中每个元素都是一个数组,由偏移量 0 处的匹配字符串及其在主题内偏移量 1 处的字符串偏移量组成。此标志仅用于 preg_split(). | |
PREG_UNMATCHED_AS_NULL | 此标志告诉 preg_match() 和 preg_match_all() 将 $matches 中不匹配的子模式作为空值包含在内。如果没有此标志,不匹配的子模式将报告为空字符串,就好像它们是空匹配一样。设置此标志可以区分这两种情况。 | 7.2.0 |
PREG_NO_ERROR | 由preg_last_error() 如果没有错误。 | 5.2.0 |
PREG_INTERNAL_ERROR | 如果存在内部错误,则由 preg_last_error() 返回PCRE 错误。 | 5.2.0 |
PREG_BACKTRACK_LIMIT_ERROR | 由 preg_last_error() 如果回溯限制已用尽。 | 5.2.0 |
PREG_RECURSION_LIMIT_ERROR | 5.2.0 | |
PREG_RECURSION_LIMIT_ERROR | 如果递归限制已用尽,则由 preg_last_error() 返回。 | 5.2.0 |
PREG_BAD_UTF8_ERROR | 由返回preg_last_error() 如果最后一个错误是由格式错误的 UTF-8 数据引起的(仅当在 UTF-8 模式下运行正则表达式时)。 | 5.2.0 |
PREG_BAD_UTF8_OFFSET_ERROR | 如果偏移量没有,则由 preg_last_error() 返回不对应于有效 UTF-8 代码点的开头(仅当在 UTF-8 模式下运行正则表达式时)。 | 5.3.0 |
PREG_JIT_STACKLIMIT_ERROR | 如果最后一个 PCRE 函数由于限制而失败,则由 preg_last_error() 返回JIT 堆栈空间。 | 7.0.0 |
PCRE_VERSION | PCRE 版本和发布日期(例如"7.0 2006 年 12 月 18 日")。 | 5.2.4 |