我想使用正则表达式的数组来查找和替换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