PHP の strtr 関数と str_replace 関数は両方とも文字列置換を実行しますが、いくつかの機能があります。
最初の違い: 置換順序
strtr は置換ペアを長さによって降順に並べ替えますが、str_replace は定義された順序で置換ペアを処理します。 。これにより、文字列内の複数の部分文字列を置換するときに異なる結果が生じる可能性があります。次の例を考えてみましょう:
<code class="php">$text = 'test string'; echo strtr($text, 'st', 'XY') . "\n"; echo str_replace(['s', 't', 'st'], ['X', 'Y', 'Z'], $text) . "\n";</code>
これは出力します:
YeXY XYring YeXY XYring
最初のケースでは、strtr は最初に長い部分文字列 "st" を置き換えますが、2 番目のケースでは、str_replace が最初に「s」。その結果、最終的な出力は異なります。
2 番目の違い: 置換の優先順位
strtr は長い置換ペアに高い優先順位を与えますが、str_replace は最初に出現した置換ペアに優先順位を与えます。部分文字列の。これにより、複数の部分文字列を置換するときに異なる結果が生じる可能性もあります。次の例を考えてみましょう:
<code class="php">$text = 'ZBB2'; echo str_replace(['1', '2', '3', 'B'], ['A', 'B', 'C', 'D'], $text) . "\n"; echo strtr($text, ['1' => 'A', '2' => 'B', '3' => 'C', 'B' => 'D']) . "\n";</code>
これは出力します:
ZDDD ZDDB
最初のケースでは、str_replace は最初に「B」を「D」に置き換え、次に「BB2」に導きます。 「DD2」に置き換えられます。 2 番目のケースでは、strtr は最初に「B」を「D」に置き換えます。これにより、「ZBB2」が「ZDDB」に置き換えられます。
いつどの関数を使用するか
一般に、strtr は、置換順序が重要ではない単純な文字列置換に適しています。一方、str_replace は、置換の順序が重要な場合や置換の優先順位を制御する必要がある、より複雑な置換に適しています。
以上がPHP では `strtr` と `str_replace` をいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。