githubでホストされているオープンソースプロジェクトを実行しています。私は現在PHP 7で動いている新しいバージョンをリリースしようとしています。これは私が助けを必要としているところです。私はかなりのPHP関数の大部分を持っていて、mysqli
も同様に快適ですが、自分のプロジェクトを実行している間は、正規表現を使ったことは一度もありませんでした。私は現在使用していない/e
修飾子を使用して2つのパターンを持っており、それらを修正する方法はわからないので、実際に何かを学び、私の問題を解決するためにここで質問してほしいと思っています。/e修飾子は非推奨です
問題が発生しましたpreg_replace
私はコードタグ用のGeshi構文ハイライターに使用しました。
// [php]code[/php]
if (stripos($s, '[php]') !== false) {
$s = preg_replace("#\[(php|sql|html)\](.+?)\[\/\\1\]#ise", "source_highlighter('\\2','\\1')", $s);
}
もう一つはliveleakのなどのようなメディアのタグを処理します。
if (stripos($s, '[media=') !== false) {
$s = preg_replace("#\[media=(youtube|liveleak|GameTrailers|vimeo|imdb)\](.+?)\[/media\]#ies", "_MediaTag('\\2','\\1')", $s);
}
は両方とも働いて、このエラー投げされていません。
をPHP Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead.
問題正規表現を使って作業する方法がわかりません。過去数週間にわたってチュートリアルを試してみましたが、実際には理解できません。
詳細なお返事ありがとうございました。マイクは、私を大きく助けました。両方のタグがエラーなしで機能しています。私は重複した回答のいくつかを見ていたが、何も成功しなかった、もう一度感謝! – Bigjoos
'\\ 2'と '\\ 1'は$ subs [1]と$ subs [0]に変換され、2と1ではありません。 – Ionut