我正在尝试使用正则表达式数组在 PHP 中的字符串中查找和替换,但是出现错误unknown modifier
。我知道这似乎是一个流行的问题,但是我不明白如何在我的场景中解决它。
这是我原来的正则表达式模式:
{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);
这是一个活生生的例子