Preg match 警告:preg#u match()[function.preg match]:未知修饰符'-';
我在Wordpress网站工作,最近我开始收到以下警告: 警告:preg_match()[function.preg match]:未知修饰符“-” 它始于我将permalink结构更改为Preg match 警告:preg#u match()[function.preg match]:未知修饰符'-';,preg-match,Preg Match,我在Wordpress网站工作,最近我开始收到以下警告: 警告:preg_match()[function.preg match]:未知修饰符“-” 它始于我将permalink结构更改为/%postname%/,这是BuddyPress运行所必需的。如果使用默认的permalink结构,问题就会消失 以下是发生错误的wp includes/class wp.php中的代码: if ( preg_match("#^$match#", $request_match, $matches) || p
/%postname%/
,这是BuddyPress运行所必需的。如果使用默认的permalink结构,问题就会消失
以下是发生错误的wp includes/class wp.php
中的代码:
if ( preg_match("#^$match#", $request_match, $matches) ||
preg_match("#^$match#", urldecode($request_match), $matches) ) {
这是因为
-
和/
是特殊符号,您可以将此代码更改为:
if ( preg_match("/^".preg_quote($match)."/", $request_match, $matches) ||
preg_match("/^".preg_quote($match)."/", urldecode($request_match), $matches) ) {
但我假设问题更深层,在wp的核心逻辑中,如果没有
$match
变量内容,就很难知道问题是什么,但如果您获得此警告,那是因为$match
包含-
(即使用的模式分隔符和-
字符)。然后,此#
后面的所有字符都被视为修饰符
您可以尝试将分隔符(并祈祷)更改为~
:
if ( preg_match("~^$match~", $request_match, $matches) ||
preg_match("~^$match~", urldecode($request_match), $matches) ) {
如果不起作用,请尝试使用其他分隔符。什么是
$match
的内容?可能重复感谢Ilya,但问题仍然存在。您很可能是对的,问题在更深的地方。问题在同一行中?-
在字符类之外没有特殊意义。@casimirithippolyte是的,值也有/
,因此-
成为修饰符