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.