Hola a todos,
la funcion tal como la uso ahora es asi: (ya se que el codigo no es php pero mola verlo con colores ejeje)
Código PHP:
function replaceSmilies(id){
var smilies = new Array();
smilies[":-)"] = "regular_smile.gif";
smilies[":)"] = "regular_smile.gif";
smilies[";-)"] = "wink_smile.gif";
smilies[";)"] = "wink_smile.gif";
smilies[":D"] = "teeth_smile.gif";
smilies[":-D"] = "teeth_smile.gif";
smilies[":-|"] = "what_smile.gif";
smilies[":|"] = "what_smile.gif";
smilies[":-("] = "sad_smile.gif";
smilies[":("] = "sad_smile.gif";
smilies[":ein:"] = "sarcastic_smile.gif";
smilies[":sueco:"] = "roll_smile.gif";
smilies[":pensando:"] = "thinking_smile.gif";
smilies[":-?"] = "dont_know_smile.gif";
smilies[":O"] = "omg_smile.gif";
smilies[":-O"] = "omg_smile.gif";
var view = document.getElementById( id );
for( smiley in smilies ){
var html = view.innerHTML.split( smiley );
view.innerHTML = html.join("<img
src=\"$ctxPath/resources/$userName/"+smilies[smiley]+"\"
alt=\""+smiley+"\"/>");
}
}
Aunque sustituye las ocurrencias que se encuentran en los atributos TITLE de cada etiqueta y en los bloques PRE,BLOCKQUOTE y CODE, cosa q no me interesa.
Eso podria controlarlo con expresiones regulares, pero todavia no me he puesto del todo. He medio conseguido hacer funcionar esta:
Código PHP:
var patron = "(:-*\))|(:-*D)|(:-*\()|(;-*\))|(:-*\|)|(:-*\?)
|(:-*O)|(:ein:)|(:sueco:)|(:pensando:)";
var regexp = new RegExp(patron, 'gi');
view.innerHTML = view.innerHTML.replace(regexp, "<img src=\"imagenes/"+smilies[$1]+"\" alt=\"careto\"/>" );
La verdad que podria estar mas currada la expresion, pero de otra forma no me funciona, porque esta claro que todos o casi todos los emoticones tiene el :- en comun (o sin guion).
De hecho ahora q me acuerdo, en el debugger de mozilla me salta un error diciendo que la variable $1 no esta definida. uhm.
Como lo hariais vosotros? :)
un saludete, ya hablamos.