警告:preg_match()[function.preg-match]:未知修饰符' - '

时间:2013-10-24 21:33:08

标签: preg-match

我正在使用Wordpress网站,最近我开始收到此警告:

  

警告:preg_match()[function.preg-match]:未知修饰符' - '

当我将永久链接结构更改为/%postname%/时开始,这是BuddyPress运行所必需的。如果使用默认的永久链接结构,问题就会消失。

以下是发生错误的wp-includes/class-wp.php代码:

if ( preg_match("#^$match#", $request_match, $matches) ||
 preg_match("#^$match#", urldecode($request_match), $matches) ) {

2 个答案:

答案 0 :(得分:1)

这是因为-/是特殊符号,您可以将此代码更改为:

if ( preg_match("/^".preg_quote($match)."/", $request_match, $matches) ||
 preg_match("/^".preg_quote($match)."/", urldecode($request_match), $matches) ) {

但我认为问题在某个更深处,在wp

的核心逻辑中

答案 1 :(得分:0)

如果没有$match变量内容,很难知道问题是什么,但是如果你得到这个警告,那是因为$match包含#-(即使用的模式分隔符和-字符)。然后,#之后的所有字符都被视为修饰符。

您可以尝试将分隔符(和祈祷)更改为~

if ( preg_match("~^$match~", $request_match, $matches) ||
preg_match("~^$match~", urldecode($request_match), $matches) ) {

如果不起作用,请尝试使用其他分隔符。