A tu último intento .. quitale el código HTML del str_replace() . .Josemi ya te comentó y puedes comprobarlo leyendo la documentación oficial de dicha función en
www.php.net que esa función acepta como parámetros arrays ..
Uno de los arrays contendrá tus smiles y el otro el código HTML -completo- que ha de sustituir .. en tu caso el tag completo de imagen junto con la ruta/nombre de la misma ..
Lee detenidamente el ejemplo de Josemi.
Un saludo,