Pues usa arrays .. que para eso están:
Un array con tus smiles y link que corresponda (nombre de la imagen sólo) .. un bucle para recorrer el array y aplicar con cada elemento tu función ereg_replace()
Código PHP:
$cadena="hola [:)], estoy triste [:(]";
$smiles=array("[:)]"=>"riendose.gif","[:(]"=>"triste.gif");
foreach ($smiles as $smile => $imagen){
$cadena = ereg_replace($smile, "<img src=\"images/lvisitas/$imagen\">", $cadena);
}
echo $cadena;
Pero, ahora que recuerdo .. creo que a un ereg_replace() se le puede pasar un array completo y así evitar el bucle .. Revisa la documentación oficial de esa función de expresiones regulares.
(fijate de donde sacastes esa función .. por qué pareciera que originalmente esa función trabajase como te comento.)
Un saludo,