我想使用正則表達式的數組來查找和替換PHP中的字符串,但是我得到錯誤unknown modifier
。我知道這似乎是一個流行的問題,但我不明白如何解決它在我的情況。PHP preg_replace「未知修飾符」
這是我原來的正則表達式:
{youtube((?!}).)*}
我對它運行下面的代碼,以逃避任何字符:
$pattern = '/' . preg_quote($pattern) . '/';
返回以下內容:
/\{youtube\(\(\?\!\}\)\.\)\*\}/
然而,當我通過preg_replace
運行此模式時,出現以下錯誤:
Warning: preg_replace() [function.preg-replace]: Unknown modifier 'y' ...
任何想法什麼需要改變,以及我在這裏展示的代碼的哪個階段?
非常感謝
編輯1
按照要求,這裏是我使用的代碼:
$content = "{youtube}omg{/youtube}";
$find = array();
$replace = array();
$find[] = '{youtube((?!}).)*}';
$replace[] = '[embed]http://www.youtube.com/watch?v=';
$find[] = '{/youtube((?!}).)*}';
$replace[] = '[/embed]';
foreach ($find as $key => $value) {
$find[$key] = '/' . preg_quote($value) . '/';
}
echo preg_replace($find, $replace, $content);
這裏有一個live example
不,你爲什麼總是使用'preg_quote'。它是用於文字串部分,但你已經有了一個正則表達式模式。 – mario 2013-03-13 12:53:28
馬里奧,我認爲他們試圖隔離原因。它*仍*拋出奇怪錯誤的事實本身就很有趣。 – Joey 2013-03-13 12:54:10
@mario我使用'preg_quote'來解決早期的問題......但即使沒有它,我也會得到同樣的錯誤。 – 2013-03-13 12:55:53