ホームページ >バックエンド開発 >PHPチュートリアル >「preg_replace()」の「/e」修飾子から「preg_replace_callback()」に安全に移行する方法は?
preg_replace_callback 関数は、preg_replace() の /e 修飾子の代替機能を提供します。強化された柔軟性とセキュリティを提供します。この移行を理解するために、これらの変更の目的と使用法を調べてみましょう。
正規表現では、キャプチャされた部分にアクセスするために後方参照が使用されます。一致した文字列の。 2 後方参照は、2 番目にキャプチャされた部分を指し、例では ([a-z]) で示されることがよくあります。これにより、置換文字列内でキャプチャされた値を操作できるようになります。
preg_replace_callback は、コールバックを使用することで preg_replace() の機能を強化します。 /e 修飾子の代わりに関数を使用します。このコールバック関数は、一致した後方参照を含む配列を引数として受け取ります。
既存のコードを移行するには、/e 置換文字列を次のような匿名コールバック関数に変換できます。したがって:
'strtoupper("2")'<br>
は次のようになります:
function($matches ) { return strtoupper($matches[2]); }<br>
ここで、$matches[2] は元の式の 2 に対応します。
$matches はコールバック関数のパラメータ名にすぎないことに注意してください。さまざまな名前を自由に選択できます。さらに、提供された回答で説明されているように、名前付き関数またはファーストクラス呼び出し可能構文を使用できます。
コールバック関数内では、本質的に周囲のスコープから変数にアクセスすることはできません。これを解決するには、匿名関数で use キーワードを使用して必要な変数をインポートします。
これらのガイドラインに従うことで、preg_replace() コードをより最新のコードにシームレスに移行できます。多用途の preg_replace_callback 関数。
以上が「preg_replace()」の「/e」修飾子から「preg_replace_callback()」に安全に移行する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。