Не совсем то. Дело в том, что я не сам определяю смайлы. Я ищу те, которые обычно применяются юзверями, например
;-) и прочие.
Приведу фрагмент кода:
var smiles = [
["http://savepic.ru/708616.gif", ":-)", [":\\)", ":-\\)", "\\(:", "\\(-:"]],
["http://savepic.ru/708610.gif", ":-(", [":\\(", ":-\\(", "\\):", "\\)-:"]],
["http://savepic.ru/695298.gif", ";-)", [";-\\)", ";\\)", "\\(;", "\\(-;"]],
["http://savepic.ru/698376.gif", ":-P", [":-P", ":P", ":-p", ":p"]],
["http://savepic.ru/696328.gif", "O_O", ["O_O", "o_o", "OO", "oo"]],
];
var blocks = document.getElementsByClassName('block');
for (b = 0; b < blocks.length; b++)
for (i = 0; i < smiles.length; i++)
for (j = 0; j < smiles[i][2].length; j++)
{
var sm = smiles[i][2][j];
var reg = new RegExp("\\.\\,\\(\\)" + sm + "\\.\\,\\(\\)");
var result = blocks[b].innerHTML.replace(reg, "<img src=\"" + smiles[i][0] + "\" />");
blocks[b].innerHTML = result;
}
Т.е. я ищу элементы, определённые в smiles[][2], заменяю их тегами img с href из smiles[][0].
По-идее, найденный текст, например,
oo может быть частью слова, а не смайлом.
Потому я определяю смайл, как фрагмент обрамлённый в пробелы|знаки_препинания|с обки|символы_перевода_стро ки ну и он может находиться либо в начале текста либо в конце.