PHP 升级后字符类中的范围无效
此错误,“preg_match(): 编译失败:偏移处字符类中的范围无效20,”通常发生在 PHP 升级对 PCRE 引擎或您的应用程序中使用的 Unicode 引擎进行更改时。
PHP PCRE2 迁移
PHP 7.3 及更高版本使用 PCRE2,它引入了一些向后不兼容的更改。其中一项更改是对字符类模式进行更严格的验证。
字符类中的连字符
以前,您可以转义连字符 (-) 并在字符串中的任何位置使用它。字符类。但是,从 PHP 7.3 开始,您必须仅将连字符放在字符类的开头或结尾。
解决方案
要解决此错误,请确保连字符 (-) 在字符类中正确放置。如果需要在类中使用连字符作为字符,则必须对其进行转义(例如 -)。
示例
// Invalid (in PHP 7.3+) preg_match("/^[a-z0-9]([0-9a-z_\-\s])+$/i", $subuser); // Valid (in PHP 7.3+) preg_match("/^[a-z0-9]([0-9a-z\-_\s])+$/i", $subuser);
其他注意事项
以上是为什么我在 PHP 升级后收到'preg_match(): 编译失败:字符类中的范围无效”?的详细内容。更多信息请关注PHP中文网其他相关文章!