La fonction en php str_replace remplace toutes les occurrences dans une chaîne.
Voici une astuce que j’ai trouvé sur
stackoverflow pour ne remplacer que la premiere chaine trouvée
Utiliser str_replace en php pour remplacer la premiere occurence d’une chaine de caractere
1ere fonction
function str_replace_first($search, $replace, $subject) { $pos = strpos($subject, $search); if ($pos !== false) { return substr_replace($subject, $replace, $pos, strlen($search)); } return $subject; }
2eme fonction
function str_replace_first($search, $replace, $subject) { return implode($replace, explode($search, $subject, 2)); }
Les tests
J’ai chronométré les deux fonctions et la première est deux fois plus rapide lorsqu’aucune correspondance n’est trouvée. Ils sont à la même vitesse lorsqu’une correspondance est trouvée.
Modération subjective.