Maison  >  Article  >  développement back-end  >  Quand devriez-vous utiliser `strtr` plutôt que `str_replace` en PHP ?

Quand devriez-vous utiliser `strtr` plutôt que `str_replace` en PHP ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-05 00:04:01312parcourir

When should you use `strtr` versus `str_replace` in PHP?

Quand utiliser strtr vs str_replace ?

Les fonctions strtr et str_replace en PHP effectuent toutes deux des remplacements de chaînes, mais il existe quelques différences subtiles entre leur comportement.

Première différence : ordre de remplacement

strtr trie ses paires de remplacement par longueur dans l'ordre décroissant, tandis que str_replace les traite dans l'ordre dans lequel elles sont définies . Cela peut conduire à des résultats différents lors du remplacement de plusieurs sous-chaînes dans une chaîne. Prenons l'exemple suivant :

<code class="php">$text = 'test string';

echo strtr($text, 'st', 'XY') . "\n";
echo str_replace(['s', 't', 'st'], ['X', 'Y', 'Z'], $text) . "\n";</code>

Cela affichera :

YeXY XYring
YeXY XYring

Dans le premier cas, strtr remplace d'abord la sous-chaîne la plus longue "st", tandis que dans le second cas, str_replace remplace "s" en premier. En conséquence, le résultat final est différent.

Deuxième différence : priorité de remplacement

strtr donne une priorité plus élevée aux paires de remplacement plus longues, tandis que str_replace donne la priorité à la première occurrence. d'une sous-chaîne. Cela peut également conduire à des résultats différents lors du remplacement de plusieurs sous-chaînes. Prenons l'exemple suivant :

<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>

Cela affichera :

ZDDD
ZDDB

Dans le premier cas, str_replace remplace d'abord "B" par "D", ce qui mène ensuite à "BB2" étant remplacé par "DD2". Dans le second cas, strtr remplace d'abord "B" par "D", ce qui conduit ensuite au remplacement de "ZBB2" par "ZDDB".

Quand utiliser quelle fonction

En général, strtr est mieux adapté aux remplacements de chaînes simples où l'ordre des remplacements n'est pas important. str_replace, en revanche, est mieux adapté aux remplacements plus complexes où l'ordre des remplacements est important ou où vous devez contrôler la priorité de remplacement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn