文字列内の変数置換の最適化
中括弧で囲まれたプレースホルダー変数を置換することを目的とした関数 dynStr は、効率を高めるために拡張できます。そしてよりシンプルな操作性。ここでは、いくつかの重要な観察と最適化の提案を示します:
ネストされた配列の結果:
実際の一致にアクセスするには、ネストされているため、現在 2 つの foreach ループを使用しています。 $matches 配列の性質。代わりに preg_match() を使用することを検討してください。これにより、配列の代わりに一致を直接出力できます。
preg_match('/\{[A-Z0-9_]+\}/', $str, $matches);
大文字と小文字を区別しない:
コードは、変数名は常に大文字です。変数名に大文字と小文字が混在している場合、それらは置換されません。大文字と小文字の両方の変数を処理するコールバックで preg_replace_callback() を使用することを検討してください:
preg_replace_callback('/\{[A-Za-z0-9_]+\}/', function ($match) { return $this->exists($match[0]) ? $this->getValue(strtolower(substr($match[0], 1, -1))) : ''; }, $string);
文字列置換の最適化:
複数の置換を実行する代わりに一致するたびに、次の配列で str_replace() を 1 回使用する方が効率的です。置換:
$replacements = array_map(function ($key) use ($vars) { return $vars[strtolower($key)]; }, array_keys($vars)); str_replace(array_keys($replacements), array_values($replacements), $string);
次の最適化されたアプローチの使用を検討してください:
function dynStr($str, $vars) { $pattern = '/\{[A-Za-z0-9_]+\}/'; return preg_replace_callback($pattern, function ($match) use ($vars) { return $vars[strtolower(substr($match[0], 1, -1))]; }, $str); }
以上がPHP を使用して文字列内の変数置換を最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。