预定义常量

以下常量由此扩展定义,仅当扩展已编译到 PHP 中或在运行时动态加载时才可用。

PREG 常量
常量 描述
PREG_PATTERN_ORDER (int) 对结果进行排序,使 $matches[0] 为完整模式匹配的数组,$matches[1] 为第一个带括号的子模式匹配的字符串数组,依此类推。此标志仅与 preg_match_all() 一起使用。  
PREG_SET_ORDER (int) 对结果进行排序,使 $matches[0] 为第一组匹配的数组,$matches[1] 为第二组匹配的数组,依此类推。此标志仅与 preg_match_all() 一起使用。  
PREG_OFFSET_CAPTURE (int) 请参见 PREG_SPLIT_OFFSET_CAPTURE 的描述。  
PREG_SPLIT_NO_EMPTY (int) 此标志告诉 preg_split() 仅返回非空片段。  
PREG_SPLIT_DELIM_CAPTURE (int) 此标志告诉 preg_split() 也捕获分隔符模式中带括号的表达式。  
PREG_SPLIT_OFFSET_CAPTURE (int) 如果设置了此标志,则对于每次匹配,都会返回附带的字符串偏移量。请注意,这会更改返回值,变成一个数组,其中每个元素都是一个数组,包含匹配的字符串(偏移量为 0)和其在主题中的字符串偏移量(偏移量为 1)。此标志仅用于 preg_split()  
PREG_UNMATCHED_AS_NULL (int) 此标志告诉 preg_match()preg_match_all() 将未匹配的子模式包含在 $matches 中,作为 null 值。没有此标志,未匹配的子模式将报告为空字符串,就好像它们是空匹配一样。设置此标志可以区分这两种情况。 7.2.0
PREG_NO_ERROR (int) 如果没有任何错误,则由 preg_last_error() 返回。 5.2.0
PREG_INTERNAL_ERROR (int) 如果发生内部 PCRE 错误,则由 preg_last_error() 返回。 5.2.0
PREG_BACKTRACK_LIMIT_ERROR (int) 如果 回溯限制 已耗尽,则由 preg_last_error() 返回。 5.2.0
PREG_RECURSION_LIMIT_ERROR (int) 如果 递归限制 已耗尽,则由 preg_last_error() 返回。 5.2.0
PREG_BAD_UTF8_ERROR (int) 如果最后一个错误是由格式错误的 UTF-8 数据引起的,则由 preg_last_error() 返回(仅在以 UTF-8 模式 运行正则表达式时)。 5.2.0
PREG_BAD_UTF8_OFFSET_ERROR (int) 如果偏移量与有效的 UTF-8 代码点的开头不对应,则由 preg_last_error() 返回(仅在以 UTF-8 模式 运行正则表达式时)。 5.3.0
PREG_JIT_STACKLIMIT_ERROR (int) 如果最后一个 PCRE 函数因 JIT 堆栈空间有限而失败,则由 preg_last_error() 返回。 7.0.0
PCRE_VERSION (string) PCRE 版本和发布日期(例如 "7.0 18-Dec-2006")。 5.2.4
PCRE_VERSION_MAJOR (int) PCRE 主版本号。  
PCRE_VERSION_MINOR (int) PCRE 次版本号。  
PCRE_JIT_SUPPORT (bool) 指示 PCRE JIT 支持是否可用。  
PREG_GREP_INVERT (int) 返回与给定模式不匹配的元素。  
添加注释

用户贡献的注释 2 个注释

erutan409 at hotmail dot com
9 年前
PREG_PATTERN_ORDER: 1
PREG_SET_ORDER: 2
PREG_OFFSET_CAPTURE: 256
PREG_SPLIT_NO_EMPTY: 1
PREG_SPLIT_DELIM_CAPTURE: 2
PREG_SPLIT_OFFSET_CAPTURE: 4
PREG_NO_ERROR: 0
PREG_INTERNAL_ERROR: 1
PREG_BACKTRACK_LIMIT_ERROR: 2
PREG_RECURSION_LIMIT_ERROR: 3
PREG_BAD_UTF8_ERROR: 4
PREG_BAD_UTF8_OFFSET_ERROR: 5
PCRE_VERSION: %YOUR_VERSION_NUMBER%
Robert
8 年前
PHP 7.0.0 中引入的新的 PREG_JIT_STACKLIMIT_ERROR 常量值为 6。

我在解析一个 112KB 文件时遇到了此错误代码。preg_match_all 失败并出现此错误。有趣的是:匹配数组包含一些条目,但并非所有条目,因为命令失败了(我错过了检查返回值)。

不幸的是,您无法配置 PCRE JIT 的堆栈大小。唯一的方法是 - 至少对我来说 - 通过 php.ini 禁用 PCRE JIT(pcre.jit=0)。
To Top