正規表現は、特にキャプチャ グループや置換を使用する場合には、恐ろしい場合があります。 '/e' 修飾子を使用して preg_replace() からの置換タスクを解読しましょう:
public static function camelize($word) { return preg_replace('/(^|_)([a-z])/e', 'strtoupper("\2")', $word); }
ここでの目標は、'^' (文字列の先頭) または '_' (アンダースコア)。
「/e」修飾子は、置換文字列を PHP コードとして評価します。 「2」は 2 番目にキャプチャされたグループを指し、「^」または「_」に続く小文字です。ただし、この修飾子はセキュリティ上の理由から非推奨になります。
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' キーワードを使用して明示的にインポートされた変数にのみアクセスできます。
以上がPHP の非推奨の `preg_replace()` `/e` 修飾子を `preg_replace_callback()` に安全に置き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。