ホームページ > バックエンド開発 > PHPチュートリアル > preg_replace() の /e 修飾子を preg_replace_callback() に安全に置き換える方法は?

preg_replace() の /e 修飾子を preg_replace_callback() に安全に置き換える方法は?

Linda Hamilton
リリース: 2024-12-31 02:25:10
オリジナル
790 人が閲覧しました

How to Safely Replace preg_replace()'s /e Modifier with preg_replace_callback()?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート