2013-10-24 63 views
0

我工作的一个WordPress站点,最近我已经开始得到这个警告:警告:的preg_match()[function.preg匹配]:未知的修饰词 ' - '

警告:的preg_match()函数.preg匹配]:未知的修饰词“ - ”

它开始时,我改变了固定链接结构来/%postname%/,为BuddyPress的运作这是必要的。如果使用默认的永久链接结构,问题就会消失。

下面是从wp-includes/class-wp.php其中发生错误的代码:

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

'$ match'的内容是什么? –

回答

1

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

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

,但我假设问题在更深层次,在核心逻辑wp

+0

谢谢伊利亚,但问题依然存在。你很可能是正确的,这个问题在更深层的地方。 –

+0

问题在同一行? –

+0

'-'在字符类外没有特殊含义。 –

0

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

你可以尝试改变分隔符(祈祷),以~

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

如果它不工作,尝试其他的分隔符。

相关问题