j'ai une fonction qui remplace des chaines de caractères dans un text avec des images représentants des smileys.
tout marche nickel, sauf quand je place mon smiley juste après du texte sans espace, ici l'image ne sera pas affichée mais c'est le texte du smiley qui sera affiché.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 function do_smilies($text) { $smiley_text = array(':aie:',':ccool:',':D','8-)',':(',':lol:',':mrgreen:',':P',':oops:',';)',':king:',':mouarf:'); $dir = "\LIB\smiley"; $smiley_img = scandir($dir); array_splice($smiley_img, 0,2); $text = ' '.$text.' '; $num_smilies = count($smiley_text); for ($i = 0; $i < $num_smilies; ++$i) $text = preg_replace("#(?<=.\W|\W.|^\W)".preg_quote($smiley_text[$i], '#')."(?=.\W|\W.|\W$)#m", '$1<img src="/FORUM/LIB/smiley/'.$smiley_img[$i].'" alt="'.substr($smiley_img[$i], 0, strrpos($smiley_img[$i], '.')).'" />$2', $text); return substr($text, 1, -1); }
exemple:
avec espace :
mon texte :aie:
sans espace:
j'ai essayé de faire des modifications dans la formule preg_replace mais en vein :(Code:
1
2 mon texte:aie:
