2013-03-12 81 views
1

警告的含義是什麼?任何人都可以解釋此警告?

Warning: preg_replace() [function.preg-replace]: Compilation failed: PCRE does not support \L, \l, \N{name}, \U, or \u at offset 1 in 

它被此功能觸發:

file_put_contents($file,preg_replace('(\uid=\d+)', 'uid=' . $uid, file_get_contents($file))); 

即這種模式:

'(\uid=\d+)' 

它本地工作,但不在線,這意味着它可能是PHP的我的主機的版本。我試圖谷歌解決方法,但找不到任何東西。

+0

這是一個無效的模式。您忘記了分隔符,例如'/(\ uid ....'。 – 2013-03-12 16:20:24

+0

@MarcB - '()'實際上是有效的分隔符 – 2013-03-12 16:21:33

+0

@Marc B:'('和')'也是有效的分隔符AFAIK。但它阻止你使用括號 – 2013-03-12 16:21:57

回答

5

PCRE不支持\u espace序列。

換句話說,你的正則表達式是不正確的。改爲嘗試類似(uid=\d+)

正如評論中所說(感謝Mellamokb),這裏是source

如果你想知道什麼是\u,你可以看看here

\ü標題字符一個字符。不在[]中。

+0

+1資料來源:http://www.php.net/manual/en/reference.pcre.pattern。 differences.php,#5。 – mellamokb 2013-03-12 16:20:45

+0

第一次工作!謝謝大家。 – Starkers 2013-03-12 16:25:51

+0

@JWH不客氣。正則表達式總是有點棘手,當你不習慣他們:) – Geoffroy 2013-03-12 16:26:57

0
file_put_contents($file,preg_replace('/uid=\d+/', 'uid=' . $uid, file_get_contents($file))); 
0

正則表達式模式應該由/分隔符爲界,你也可以使用(#~)。此外,沒有轉義序列\u。你可能想試試這個 -

preg_replace('/\\uid=\d+/', 'uid=' . $uid, file_get_contents($file)) 
相關問題