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);
これが実際の例です