Déjà, il n'y a pas interpolation de la variable (ie remplacement de son nom par sa valeur) dans une chaîne délimitée par des singles quotes ('). L'interpolation n'est réalisée qu'avec des doubles (").
Sinon, il y a éventuellement un problème qui va se poser : le code du smiley, s'il contient un caractère qui est, en temps normal, un métacaractère ou venait à contenir ce qui sert de délimiteur, au pire la compilation du motif va échouer et au mieux, elle pourrait avoir un effet inattendu. Il faudrait donc s'arranger pour choisir un délimiteur qui est un métacaractère et procéder à l'échappement, via la fonction preg_quote, de ce qui doit l'être :
$texte = preg_replace('.' . preg_quote($smiley) . '.', ' '.$image.' ', $texte);
Ce qui signifierait qu'ici une expression régulière n'est pas nécessaire (str_replace suffirait par exemple).
Partager