[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: СМАЙЛИЗАТОР
bodja
Вот выкладываю свою функцию,с пафосным названием СМАЙЛИЗАТОР :)
Что делает?
Преобразовывает наши закорлючки в смайлики,причем делает это на стороне клиента,естественно не утруждая ПХП в этом.
Можно хранить сообщения в том виде ,что приходят.

В качестве аргумента передаем ИД родительского блока ,который будем шуршать ,например

smileReplace('content')
или
smileReplace('comment')

function smileReplace(id) {
var str=document.getElementById(id).innerHTML;
str=str.replace(/\:\)/g,'<img src="./images/1.gif"/>');
str=str.replace(/\:\|/g,'<img src="./images/2.gif"/>');
str=str.replace(/\;\)/g,'<img src="./images/3.gif"/>');
str=str.replace(/\:D/g,'<img src="./images/4.gif"/>');
str=str.replace(/o_O/g,'<img src="./images/5.gif"/>');
str=str.replace(/\:\(/g,'<img src="./images/6.gif"/>');
document.getElementById(id).innerHTML=str;
}


Естественно можно дополнить еще всякими смайликами.



Спустя 7 минут, 41 секунда (14.04.2012 - 16:53) Nikitian написал(а):
Подобное+антимат. Делал для чата. Картинки брал из квипа колобков. На входе строка, на выходе строка.
Свернутый текст


function InsertSmiles(str){
ImagePath="<img src=\"/images/smiles/";
str=str.replace(/0\:\-\)/g,ImagePath+"aa.gif\" alt=\"0:-)\" title=\"0:-)\" />");
str=str.replace(/8\)/g,ImagePath+"ai.gif\" alt=\"8)\" title=\"8)\" />");
str=str.replace(/\:\)/g,ImagePath+"ab.gif\" alt=\":)\" title=\":)\" />");
str=str.replace(/\:\(/g,ImagePath+"ac.gif\" alt=\":(\" title=\":(\" />");
str=str.replace(/\;\)/g,ImagePath+"ad.gif\" alt=\";)\" title=\";)\" />");
str=str.replace(/\:P/g,ImagePath+"ae.gif\" alt=\":P\" title=\":P\" />");
str=str.replace(/\:D/g,ImagePath+"ag.gif\" alt=\":D\" title=\":D\" />");
str=str.replace(/\:\-\[/g,ImagePath+"ah.gif\" alt=\":-[\" title=\":-[\" />");
str=str.replace(/\:\`\(/g,ImagePath+"ak.gif\" alt=\":`(\" title=\":`(\" />");
str=str.replace(/\:\-X/g,ImagePath+"al.gif\" alt=\":-X\" title=\":-X\" />");
str=str.replace(/\:\|/g,ImagePath+"an.gif\" alt=\":|\" title=\":|\" />");
str=str.replace(/\:\-\//g,ImagePath+"ao.gif\" alt=\":-/\" title=\":-/\" />");
str=str.replace(/]\:\&gt\;/g,ImagePath+"aq.gif\" alt=\"]:>\" title=\"]:>\" />");
str=str.replace(/\*KISSED\*/g,ImagePath+"as.gif\" alt=\"*KISSED*\" title=\"*KISSED*\" />");
str=str.replace(/\*KISSING\*/g,ImagePath+"aw.gif\" alt=\"*KISSING*\" title=\"*KISSING*\" />");
str=str.replace(/\?\?\?/g,ImagePath+"huh.gif\" alt=\"???\" title=\"???\" />");
str=str.replace(/\@\}\-\&gt\;\-\-/g,ImagePath+"ax.gif\" alt=\"@}->--\" title=\"@}->--\" />");
str=str.replace(/\*THUMBS UP\*/g,ImagePath+"ay.gif\" alt=\"*THUMBS UP*\" title=\"*THUMBS UP*\" />");
str=str.replace(/\*DRINK\*/g,ImagePath+"az.gif\" alt=\"*DRINK*\" title=\"*DRINK*\" />");
str=str.replace(/\%\)/g,ImagePath+"be.gif\" alt=\"%)\" title=\"%)\" />");
str=str.replace(/\*HELP\*/g,ImagePath+"bc.gif\" alt=\"*HELP*\" title=\"*HELP*\" />");
str=str.replace(/\*SOS\*/g,ImagePath+"bc.gif\" alt=\"*HELP*\" title=\"*HELP*\" />");
str=str.replace(/\*ROFL\*/g,ImagePath+"bj.gif\" alt=\"*ROFL*\" title=\"*ROFL*\" />");
str=str.replace(/\*YAHOO\*/g,ImagePath+"bp.gif\" alt=\"*YAHOO*\" title=\"*YAHOO*\" />");
str=str.replace(/\*BYE\*/g,ImagePath+"bs.gif\" alt=\"*BYE*\" title=\"*BYE*\" />");
str=str.replace(/\*HI\!\*/g,ImagePath+"bt.gif\" alt=\"*HI!*\" title=\"*HI!*\" />");
str=str.replace(/\*KILL ALL\*/g,ImagePath+"fb.gif\" alt=\"*KILL ALL*\" title=\"*KILL ALL*\" />");
str=str.replace(/\*SUICIDE1\*/g,ImagePath+"fo.gif\" alt=\"*SUICIDE1*\" title=\"*SUICIDE1*\" />");
str=str.replace(/\*SUICIDE2\*/g,ImagePath+"ga.gif\" alt=\"*SUICIDE2*\" title=\"*SUICIDE2*\" />");
str=str.replace(/\*NOSPAM\*/g,ImagePath+"gj.gif\" alt=\"*NOSPAM*\" title=\"*NOSPAM*\" />");
str=str.replace(/\*LAW\*/g,ImagePath+"hm.gif\" alt=\"*LAW*\" title=\"*LAW*\" />");
str=str.replace(/\*WALL\*/g,ImagePath+"bu.gif\" alt=\"*WALL*\" title=\"*WALL*\" />");
//censor
str=str.replace(/бзд|хуй|хуе|хуё|пизд|ебан|наеб|наёб|ёбан|херн|херо|бля|ебат|уебо|уёбо|пидор|сука|сучар|сучка|сучек| сучёк|сучок|педри|пизд|fuck/gi,"###");
str=str.replace(/БЗД|ХУЙ|ХУЕ|ХУЁ|ПИЗД|ЕБАН|НАЕБ|НАЁБ|ЁБАН|ХЕРН|ХЕРО|БЛЯ|ЕБАТ|УЕБО|УЁБО|ПИДОР|СУКА|СУЧАР|СУЧКА|СУЧЕК| СУЧЁК|СУЧОК|ПЕДРИ|ПИЗД|FUCK/gi,"###");
str=str.replace(/бзд|хуй|хуе|хуё|пизд|ебан|наеб|наёб|ёбан|херн|херо|бля|ебат|уебо|уёбо|пидор|суки|сучар|сучка|сучек| сучёк|сучок|педри|пизд|fuck/gi,"###");
str=str.replace(/БЗД|ХУЙ|ХУЕ|ХУЁ|ПИЗД|ЕБАН|НАЕБ|НАЁБ|ЁБАН|ХЕРН|ХЕРО|БЛЯ|ЕБАТ|УЕБО|УЁБО|ПИДОР|СУКИ|СУЧАР|СУЧКА|СУЧЕК| СУЧЁК|СУЧОК|ПЕДРИ|ПИЗД|FUCK/gi,"###");
return str;
}


Спустя 4 минуты, 24 секунды (14.04.2012 - 16:57) bodja написал(а):
Застрелится можно biggrin.gif
Да идея оказалась не новой ,но зато какое название придумал biggrin.gif

Ок ,дополню.
ВВкоды

Цитата
function bbReplace(id) {
var str=document.getElementById(id).innerHTML;
str=str.replace(/\[b\]/g,'<span style="font-weight:bold">');
str=str.replace(/\[\/b\]/g,'</span>');
str=str.replace(/\[i\]/g,'<span style="font-style:italic">');
str=str.replace(/\[\/i\]/g,'</span>');
str=str.replace(/\[d\]/g,'<span style="text-decoration:line-through">');
str=str.replace(/\[\/d\]/g,'</span>');
str=str.replace(/\[h3\]/g,'<span style="font-size:24px">');
str=str.replace(/\[\/h3\]/g,'</span>');
str=str.replace(/\[h6\]/g,'<span style="font-size:8px">');
str=str.replace(/\[\/h6\]/g,'</span>');
str=str.replace(/\[red\]/g,'<span style="color:red">');
str=str.replace(/\[\/red\]/g,'</span>');
str=str.replace(/\[green\]/g,'<span style="color:green">');
str=str.replace(/\[\/green\]/g,'</span>');
str=str.replace(/\[blue\]/g,'<span style="color:blue">');
str=str.replace(/\[\/blue\]/g,'</span>');
document.getElementById(id).innerHTML=str;
}


Ну и т.д.

Спустя 33 минуты, 57 секунд (14.04.2012 - 17:31) Winston написал(а):
Цитата (bodja @ 14.04.2012 - 16:45)
str=str.replace(/\:\)/g,'<img src="./images/1.gif"/>');
str=str.replace(/\:\|/g,'<img src="./images/2.gif"/>');
str=str.replace(/\;\)/g,'<img src="./images/3.gif"/>');
str=str.replace(/\:D/g,'<img src="./images/4.gif"/>');
str=str.replace(/o_O/g,'<img src="./images/5.gif"/>');
str=str.replace(/\:\(/g,'<img src="./images/6.gif"/>');

А в PHP хватило бы одного strtr() biggrin.gif

Спустя 3 часа, 7 минут, 35 секунд (14.04.2012 - 20:39) Zerstoren написал(а):
Цитата (Winston @ 14.04.2012 - 14:31)
Цитата (bodja @ 14.04.2012 - 16:45)
str=str.replace(/\:\)/g,'<img src="./images/1.gif"/>');
str=str.replace(/\:\|/g,'<img src="./images/2.gif"/>');
str=str.replace(/\;\)/g,'<img src="./images/3.gif"/>');
str=str.replace(/\:D/g,'<img src="./images/4.gif"/>');
str=str.replace(/o_O/g,'<img src="./images/5.gif"/>');
str=str.replace(/\:\(/g,'<img src="./images/6.gif"/>');

А в PHP хватило бы одного strtr() biggrin.gif

Вы не видели мою функцию транслитерации на JS, вот там!
Ужс.

Хотя писал я ее близко года назад, но более лучшего решения все равно не нашел.

Спустя 3 часа, 17 минут, 28 секунд (14.04.2012 - 23:56) FatCat написал(а):
Цитата (bodja @ 14.04.2012 - 17:45)
str=str.replace(/\:\)/g,'<img src="./images/1.gif"/>');

Джаваскриптовой replace отличается от php-шного str_replace тем, что обрабатывает только одно вхождение подстроки.
Я предпочитаю делать так:
str=str.split(':)').join('<img src="./images/1.gif"/>');

Спустя 6 минут, 6 секунд (15.04.2012 - 00:02) FatCat написал(а):
Цитата (Zerstoren @ 14.04.2012 - 21:39)
Вы не видели мою функцию транслитерации на JS, вот там!
Ужс.

Ага. Вот моя:
js
		code = code.split('X').join('КС').split('JE').join('Е').split('Je').join('Е').split('JO').join('Ё').split('Jo').join('Ё').split('ZH').join('Ж').split('Zh').join('Ж').split('CH').join('Ч').split('Ch').join('Ч').split('Sh').join('Ш').split('SH').join('Ш').split('JU').join('Ю').split('Ju').join('Ю').split('JA').join('Я').split('Ja').join('Я').split('A').join('А').split('B').join('Б').split('V').join('В').split('G').join('Г').split('D').join('Д').split('Z').join('З').split('I').join('И').split('J').join('Й').split('K').join('К').split('L').join('Л').split('M').join('М').split('N').join('Н').split('O').join('О').split('P').join('П').split('R').join('Р').split('S').join('С').split('T').join('Т').split('U').join('У').split('F').join('Ф').split('H').join('Х').split('C').join('Ц').split('W').join('Щ').split('#').join('Ъ').split('Y').join('Ы').split("'").join('Ь').split('E').join('Е');
code = code.split('x').join('кс').split('je').join('е').split('jo').join('ё').split('zh').join('ж').split('ch').join('ч').split('sh').join('ш').split('ju').join('ю').split('ja').join('я').split('a').join('а').split('b').join('б').split('v').join('в').split('g').join('г').split('d').join('д').split('z').join('з').split('i').join('и').split('j').join('й').split('k').join('к').split('l').join('л').split('m').join('м').split('n').join('н').split('o').join('о').split('p').join('п').split('r').join('р').split('s').join('с').split('t').join('т').split('u').join('у').split('f').join('ф').split('h').join('х').split('c').join('ц').split('w').join('щ').split('#').join('ъ').split('y').join('ы').split("'").join('ь').split('e').join('е');

Спустя 25 минут, 52 секунды (15.04.2012 - 00:28) bodja написал(а):
Цитата
Джаваскриптовой replace отличается от php-шного str_replace тем, что обрабатывает только одно вхождение подстроки.

обратите внимание на
/\;\)/g
а вот то,что не хавает массивы - ето есть плохо.

Спустя 19 часов, 18 минут, 5 секунд (15.04.2012 - 19:46) Zerstoren написал(а):
Цитата (FatCat @ 14.04.2012 - 20:56)
Цитата (bodja @ 14.04.2012 - 17:45)
str=str.replace(/\:\)/g,'<img src="./images/1.gif"/>');

Джаваскриптовой replace отличается от php-шного str_replace тем, что обрабатывает только одно вхождение подстроки.
Я предпочитаю делать так:
str=str.split(':)').join('<img src="./images/1.gif"/>');

ВЫ не правы.

Выполните такой код в консоли браузера

'some string text'.replace(/ /g,'-') //(в хроме сразу будете выведен результат)

Спустя 5 часов, 47 минут, 50 секунд (16.04.2012 - 01:34) FatCat написал(а):
Понял, тут регулярка.
Когда я учил джаваскрипт, регулярок еще в нем не было. Писал еще под IE/NN 4.0

Спустя 13 часов, 46 минут (16.04.2012 - 15:20) Zerstoren написал(а):
Цитата (FatCat @ 15.04.2012 - 22:34)
Понял, тут регулярка.
Когда я учил джаваскрипт, регулярок еще в нем не было. Писал еще под IE/NN 4.0

Тут даже не соль в регулярке, а в флаге g, который говорит заменить, пока есть вхождения.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.