Première différence:
Un exemple intéressant d'un comportement différent entre strtret se str_replacetrouve dans la section commentaires du manuel PHP:
<?php
$arrFrom = array("1","2","3","B");
$arrTo = array("A","B","C","D");
$word = "ZBB2";
echo str_replace($arrFrom, $arrTo, $word);
?>
- J'attendrais comme résultat: "ZDDB"  
- Cependant, ce retour: "ZDDD" (Parce que B = D selon notre tableau)
Pour que cela fonctionne, utilisez plutôt "strtr":
<?php
$arr = array("1" => "A","2" => "B","3" => "C","B" => "D");
$word = "ZBB2";
echo strtr($word,$arr);
?>
Cela signifie qu'il str_replaces'agit d'une approche plus globale des remplacements, tout strtren traduisant simplement les caractères un par un.
Une autre différence:
Étant donné le code suivant (tiré de PHP String Replacement Speed Comparison ):
<?php
$text = "PHP: Hypertext Preprocessor";
$text_strtr = strtr($text
    , array("PHP" => "PHP: Hypertext Preprocessor"
        , "PHP: Hypertext Preprocessor" => "PHP"));
$text_str_replace = str_replace(array("PHP", "PHP: Hypertext Preprocessor")
    , array("PHP: Hypertext Preprocessor", "PHP")
    , $text);
var_dump($text_strtr);
var_dump($text_str_replace);
?>
Les lignes de texte résultantes seront:
  string (3) "PHP" 
  string (27) "PHP: Hypertext Preprocessor"
La principale explication:
Cela se produit parce que:
- strtr : il trie ses paramètres par longueur, par ordre décroissant, donc: - 
- cela donnera "plus d'importance" au plus grand, puis, comme le texte sujet est lui-même la plus grande clé du tableau de remplacement, il sera traduit.
- parce que tous les caractères du texte sujet ont été remplacés, le processus s'arrête là.   
 
- str_replace : il fonctionne dans l'ordre dans lequel les clés sont définies, donc: - 
- il trouve la clé «PHP» dans le texte du sujet et la remplace par: «PHP: Hypertext Preprocessor», ce qui donne comme résultat:
  «PHP: préprocesseur hypertexte: préprocesseur hypertexte». 
 
- puis il trouve la clé suivante: «PHP: Hypertext Preprocessor» dans le texte résultant de l'étape précédente, donc elle est remplacée par «PHP», ce qui donne comme résultat:    - 
  - «PHP: préprocesseur hypertexte».    
 
- il n'y a plus de clés à rechercher, donc le remplacement s'arrête là. 
 
 
              
strtrpourrait facilement être mal interprété carstrstrce qui est tout à fait différent. Je commence à penser que je suis dyslexique. Je ne ferai pas cette erreur avec str_replace.