Maison > développement back-end > tutoriel php > strtr vs str_replace : quand dois-je utiliser chaque fonction de remplacement de chaîne PHP ?

strtr vs str_replace : quand dois-je utiliser chaque fonction de remplacement de chaîne PHP ?

DDD
Libérer: 2024-11-04 22:07:02
original
395 Les gens l'ont consulté

strtr vs str_replace: When should I use each PHP string replacement function?

strtr vs str_replace : quand utiliser différentes fonctions de remplacement

En PHP, les fonctions strtr et str_replace peuvent effectuer des remplacements de chaînes. Cependant, le choix de la bonne fonction dépend des exigences spécifiques et des cas d'utilisation.

Contraste dans l'ordre de remplacement

Bien que le résultat obtenu puisse sembler identique dans certains cas, il existe un différence subtile entre les deux fonctions :

echo strtr('test string', 'st', 'XY'); // "YeXY XYring"
echo str_replace(array('s', 't'), array('X', 'Y'), 'test string'); // "YeXY XYring"
Copier après la connexion

strtr remplace les sous-chaînes de droite à gauche, tandis que str_replace remplace de gauche à droite. Cette différence devient évidente lors du remplacement de sous-chaînes qui se chevauchent :

echo strtr('1 2 3 3', '1 2 3', 'XYZ'); // "1 2 3 Z"
echo str_replace(array('1 2 3', '1 2'), array('XYZ', 'AB'), '1 2 3 3'); // "ABXYZ"
Copier après la connexion

Remplacement des clés de tableau par rapport à plusieurs sous-chaînes

Une autre distinction réside dans la façon dont les tableaux de remplacement sont gérés :

$arr = array("1" => "A", "2" => "B", "3" => "C");
echo strtr('123', $arr); // "ABC"
echo str_replace(array_keys($arr), array_values($arr), '123'); // "ABC"
Copier après la connexion

Dans ce cas, les deux fonctions remplacent les caractères par leurs valeurs de tableau correspondantes. Cependant, strtr nécessite un tableau associatif avec des paires clé-valeur, tandis que str_replace peut fonctionner sur de simples tableaux de sous-chaînes et de remplacements.

Priorité de remplacement

strtr donne la priorité aux remplacements en fonction de la longueur de la sous-chaîne à remplacer, par ordre décroissant. En revanche, str_replace traite les remplacements dans l'ordre défini dans le tableau de remplacement. Cela peut conduire à des résultats différents, comme le démontre l'exemple suivant :

$text = "PHP: Hypertext Preprocessor";
$text_strtr = strtr($text, array("PHP: Hypertext Preprocessor" => "PHP", "PHP" => "PHP: Hypertext Preprocessor"));
$text_str_replace = str_replace(array("PHP", "PHP: Hypertext Preprocessor"), array("PHP: Hypertext Preprocessor", "PHP"), $text);

var_dump($text_strtr); // string(3) "PHP"
var_dump($text_str_replace); // string(27) "PHP: Hypertext Preprocessor"
Copier après la connexion

En conclusion, strtr et str_replace proposent des approches différentes pour le remplacement de chaînes en PHP. Comprendre leurs nuances subtiles de comportement et de syntaxe vous guidera dans le choix de la fonction appropriée à votre cas d'utilisation spécifique.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal