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 la commande 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"
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"
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"
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"
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 pour votre cas d'utilisation spécifique.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3