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

PHP の非推奨の `preg_replace()` `/e` 修飾子を `preg_replace_callback()` に安全に置き換える方法

Susan Sarandon
Susan Sarandonオリジナル
2024-12-19 12:15:16494ブラウズ

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

preg_replace() の '/e' 修飾子を preg_replace_callback() で置き換えます

正規表現は、特にキャプチャ グループや置換を使用する場合には、恐ろしい場合があります。 '/e' 修飾子を使用して preg_replace() からの置換タスクを解読しましょう:

public static function camelize($word) {
   return preg_replace('/(^|_)([a-z])/e', 'strtoupper("\2")', $word);
}

ここでの目標は、'^' (文字列の先頭) または '_' (アンダースコア)。

「/e」修飾子を理解する

「/e」修飾子は、置換文字列を PHP コードとして評価します。 「2」は 2 番目にキャプチャされたグループを指し、「^」または「_」に続く小文字です。ただし、この修飾子はセキュリティ上の理由から非推奨になります。

preg_replace_callback() への移行

preg_replace_callback() は、置換文字列の代わりにコールバック関数を提供することにより、より安全な代替手段を提供します。

return preg_replace_callback('/(^|_)([a-z])/', function($matches) {
    return strtoupper($matches[2]);
}, $word);

コールバック関数

匿名関数は引数として一致する配列を受け取ります。ここで、$matches[1] は '^' または '_' を表し、$matches[2] は大文字にする文字を表します。

パターンの交換

'/e' に注意してください。 preg_replace_callback() を使用する場合は、修飾子を削除する必要があります。上記のパターンは次のように単純化されます。

return preg_replace_callback('/(^|_)([a-z])/', function($matches) {
    return strtoupper($matches[2]);
}, $word);

変数のスコープ

匿名関数は、'use' キーワードを使用して明示的にインポートされた変数にのみアクセスできます。

注意点

  • 「/e」修飾子は、引数からスラッシュを削除します。 preg_replace_callback().
  • 「use」キーワードを使用すると、コールバックに変数をインポートでき、変数のスコープの問題に対処できます。

以上がPHP の非推奨の `preg_replace()` `/e` 修飾子を `preg_replace_callback()` に安全に置き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。