Код в студию: Да, не удивляйтесь, там регулярные выражения - маски матерных слов =) Так как для написания в Мозилле нельзя в исходнике использовать кириллицу, я писал в Уникоде, и переводил в кирриллицу (это уже работает, так как она хранится в переменной, а не ведена мной вручную в исходнике) | Код | //массив выражений с матами и т.д var badwordsTR = new Array(/(^|\s|za|po|na)(e|i)ba?/gi, /(x|h)u(y|j|i|e)/gi, /p(e|i)zd/gi, /su(k|4|ch)/gi, /(^|\s)blea/gi); var badwordsRU = new Array( /(^|\s|з ;а ;|н ;а ;|п ;о ;)(и ;|е ;|я ;|ё ;)б ;а ;?/gi, /х ;у ;(и ;|й ;|е ;|я ;|ё ;)/gi, /б ;л ;я ;/gi, /с ;у ;(ч ;|к ;|4)/gi, /п ;(и ;|е ;)з ;д ;/gi); var spamwordsTR = new Array(/\@/gi, /(http|ftp)(s)?:\/\//gi, /www/, /email/gi, /icq/gi); var spamwordRU = /(е ;|и ;)\s*(-)?\s*м ;(э ;|е ;)(й ;|и ;)л ;/gi; var numbers = /[0-9]{3}\S(\s*-?[0-9]*)+/gi; //cтили var lightStyles = new Array();; lightStyles['bad'] = "background-color:red; color:yellow; padding:1px;"; lightStyles['spam'] = "background-color:blue; color:red; padding:1px;"; lightStyles['numbers'] = "background-color:green; color:orange; padding:1px;";
// =сумма массивов=// function arraysumm(ar1,ar2){ var l1 = ar1.length; var l2 = ar2.length; for (var i=0; i<l2; i++){ ar1[l1+i] = ar2[i]; } return ar1; }
//найти ТДшки с классом function getElementsByClassName2(classname) { //их се загоняем в массив var a = []; var re = new RegExp('\\b' + classname + '\\b'); var els = window._content.document.getElementsByTagName("td"); for(var i=0,j=els.length; i<j; i++) if(re.test(els[i].className))a.push(els[i]); return a; }
//находим и подсвечиваем function findTrash(){ //Данные анкеты var tdo = getElementsByClassName2("co"); var tdn = getElementsByClassName2("cn"); var tds = arraysumm(tdo,tdn); var j,i; for (j=0; j<tds.length; j++){ //Маты на транслите for (i=0; i<badwordsTR.length; i++){ tds[j].innerHTML=tds[j].innerHTML.replace(badwordsTR[i],(function(x) {return '<span style="'+lightStyles["bad"]+'">' + x + '</span>'})) } //маты на русском for (i=0; i<badwordsRU.length; i++){ var badword = new XML ("<text>" + badwordsRU[i] + "</text>"); badword = badword.toString(); tds[j].innerHTML=tds[j].innerHTML.replace(eval(badword),(function(x) {return '<span style="'+lightStyles["bad"]+'">'+ x + '</span>'})); } //мыла и адреса на транслите for (i=0; i<spamwordsTR.length; i++){ tds[j].innerHTML=tds[j].innerHTML.replace(spamwordsTR[i],(function(x) {return '<span style="'+lightStyles["spam"]+'">'+x+'</span>'})); } // мыло на русском var spamword = new XML("<text>"+spamwordRU+"</text>"); spamword = spamword.toString(); tds[j].innerHTML=tds[j].innerHTML.replace(eval(spamword),(function(x) {return '<span style="'+lightStyles["spam"]+'">'+x+'</span>'}));
tds[j].innerHTML=tds[j].innerHTML.replace(numbers,(function(x){return'<span style="'+lightStyles["numbers"]+'">'+x+'</span>'})); }
}
|
В уникоде перед двоеточием я специально поставил пробелы, чтоб они тут не преобразовались в символы =) Это сообщение отредактировал(а) Innuendo - 25.8.2006, 19:24
|