我正在使用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) ) {
答案 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) ) {
如果不起作用,请尝试使用其他分隔符。