Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Preg match 警告:preg#u match()[function.preg match]:未知修饰符'-';_Preg Match - Fatal编程技术网

Preg match 警告:preg#u match()[function.preg match]:未知修饰符'-';

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

我在Wordpress网站工作,最近我开始收到以下警告:

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

它始于我将permalink结构更改为
/%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是的,值也有
/
,因此
-
成为修饰符