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
DDDoriginal
2024-11-04 22:07:02333parcourir

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"

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

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