0

我在一个 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) ) {
4

2 回答 2

1

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

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

但我认为这个问题在 wp 的核心逻辑中更深层次

于 2013-10-24T21:41:51.300 回答
0

没有$match可变内容很难知道问题出在哪里,但如果您收到此警告,那是因为$match包含#-(即使用的模式分隔符和-字符)。然后在此之后的所有字符#都被视为修饰符。

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

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

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

于 2013-10-24T22:31:13.030 回答