2013-10-24 62 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)) { 

如果它不工作,嘗試其他的分隔符。

相關問題