Tu utilise mal str_replace
Regarde comment je fais :
//ici la liste de tes smileys
$smiley = array(":D"=>"<img src=\".http://image.jeuxvideo.com/smileys_img/smiley1.gif\">",
":d"=>"<img src=\"../forumhttp://image.jeuxvideo.com/smileys_img/smiley1.gif\">",
"
"=>"<img src=\"../forumhttp://image.jeuxvideo.com/smileys_img/smiley2.gif\">",
"^^"=>"<img src=\"../forumhttp://image.jeuxvideo.com/smileys_img/smiley3.gif\">")
//aussi grande que tu veux
//et puis tu remplace dans le message
$message_ok = strtr($message, $smiley);
