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

Barbara Streisand
Libérer: 2024-11-05 00:04:01
original
249 Les gens l'ont consulté

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>
Copier après la connexion

Cela affichera :

YeXY XYring
YeXY XYring
Copier après la connexion

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>
Copier après la connexion

Cela affichera :

ZDDD
ZDDB
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!