preg_replace() の /e 修飾子から preg_replace_callback への移行
正規表現の逆参照
中心部この移行は、正規表現における後方参照を理解することです。パターンにキャプチャ グループ (かっこで区切られた) が含まれている場合、各グループ内の一致したテキストには後方参照番号が割り当てられます。この場合、後方参照 2 は、一致した小文字を参照します。
preg_replace() の /e 修飾子
preg_replace の現在非推奨の /e 修飾子() を使用すると、PHP コードでパターンを置換できます。この修飾子を使用すると、置換文字列を動的に生成できます。ただし、任意のコードを実行できるため、セキュリティ リスクも伴いました。
Enter preg_replace_callback
preg_replace_callback は、コールバック関数を導入することにより、/e 修飾子の代替を提供します。正規表現パターンにコードを直接埋め込む代わりに、置換プロセスを処理する匿名関数またはコールバックを渡すことができるようになりました。
/e-Modified パターンをコールバックに変換
提供されたパターン 'strtoupper("2")' をコールバック関数に変換するには、'2' を単純に次のように置き換えます。 $m[2]。$m は、コールバック内の一致する後方参照を含む配列を表します。
匿名コールバックの例
匿名コールバック関数の例:
function ($m) { return strtoupper($m[2]); }
ログイン後にコピー
この関数は、後方参照を含む $m 配列を入力として受け取ります。次に、2 番目の後方参照 ($m[2]) を大文字にして、それを置換として返します。
gt;注意事項
- 次の点に注意してください。 preg_replace_callback を使用する場合は、パターンから /e 修飾子を削除します。
- /e 修飾子は後方参照にスラッシュを追加しました。場合によっては、コールバックでそれらを削除する必要があるかもしれません。
以上がpreg_replace() の /e 修飾子を preg_replace_callback() に安全に置き換える方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。