ast_ross,
1. Упрощайте, а не усложняйте задачу, -Очевидно, если К - большая - она в начале предложеия и тогда имеют значения лишь прилежащие теги. 2. Приводите все варианты*никто не будет додумывать - экстраполировать 3. Задача тянет уже на Работу 4. Есть css для первой буквы в теге http://htmlbook.ru/css/first-letter |
Цитата:
|
ast_ross,
Вариант... function transF(str){ return str.replace(/^(<.*?>)?(Ко|(<(.*?)>)К(<\/\4>)о)/,'$1<span class="highlight">$2</span>'); } alert(transF('<p><p><p><b>Короткометражки</b> с ориентацией на классику немой комедии.</p>')); alert(transF('<p><p><b>К</b>ороткометражки с ориентацией на классику немой комедии.</p>')); alert(transF('Короткометражки с ориентацией на классику немой комедии.')); alert(transF('<p>Новые <b>короткометражки</b> с ориентацией на классику немой комедии.</p>')); |
Deff,
Непонял что тут не корректно? <p><p><span class="highlight"><b>К</b>о</span>роткометражки с ориентацией на классику немой комедии.</p> |
рони,
:yes: Cоррь ....Заглючило воспроизведение в мозгах |
Помогите пожалуйста с регуляркой, я с ними работаю не очень, писалось очень давно и не мной.
В общем суть: jQuery(this).html(Tmp.replace(/\[hide=([^\[]+)\]/ig, '<div class="HiddenBlock"><div class="NeededPoints" style="display: block; ">'+newHide+'</div><div class="HiddenText">').replace(/\[\/hide\]/ig, '</div></div>')); Ищет в тексте связку [hide=50]sometext[/hide] и меняет его тегами. Нужно искать и ББ-код hide и ahide. В виде костыля можно было сделать так: jQuery(this).html(Tmp.replace(/\[hide=([^\[]+)\]/ig, '<div class="HiddenBlock"><div class="NeededPoints" style="display: block; ">'+newHide+'</div><div class="HiddenText">').replace(/\[\/hide\]/ig, '</div></div>')); jQuery(this).html(Tmp.replace(/\[ahide=([^\[]+)\]/ig, '<div class="HiddenBlock"><div class="NeededPoints" style="display: block; ">'+newHide+'</div><div class="HiddenText">').replace(/\[\/ahide\]/ig, '</div></div>')); но в тексте скрипта очень часто используется такая регулярка и хочется цивилизованного способа, знаю что как-то через скобки и символ '|' делается, но экспериментировать на живом сайте боюсь. |
olegsuv,
jQuery(this).html(Tmp.replace(/\[a?hide=([^\[]+)\]/ig, '<div class="HiddenBlock"><div class="NeededPoints" style="display: block; ">'+newHide+'</div><div class="HiddenText">').replace(/\[\/a?hide\]/ig, '</div></div>')); |
olegsuv,
1. Лучше преобразование строк делать в виде функции на входе строка, на выходе преобразованная строка. 2. Выложите пару примеров входных строк, поскольку надо учитывать возможные внутри лежащие BB и простые теги... |
Deff,
ничего необычного, что-то вроде такого: [hide=20]Суть бага в том что прист может использовать [furl=http://cata.wowway.ru/?spell=11446]Контроль над разумом[/furl] [furl=http://cata.wowway.ru/?npc=39708] на этого моба[/furl] и использовать у него [furl=http://cata.wowway.ru/?spell=93633]вот этот спел [/furl]и этот спел дпсит в районе 200к. Всем удачи! [/hide] Вложений хайд в хайд быть не должно, с остальным тегами конфликтовать тоже не должно. На счет п.1 не сильно понял. рони, спасибо за код, попробую |
//Параметры: str,'hide',wrp1,wrp2 function funkReplac (a,b,c,d) { var reg= new RegExp ('\\['+b+'=(\\d*)+\\s*]([\\s\\S]*)?\\[\\/'+b+'\\]','igm') return a=a.replace(reg,c.replace('##Замена##','$1')+'$2'+d) } function HideReplac (str) { var b='hide'; var c='<div class="HiddenBlock"><div class="NeededPoints" style="display: block; ">##Замена##</div><div class="HiddenText">'; var d='</div></div>'; return funkReplac (str,b,c,d) } function aHideReplac (str) { var b='ahide'; var c='<div class="HiddenBlock"><div class="NeededPoints" style="display: block; ">##Замена##</div><div class="HiddenText">'; var d='</div></div>'; return funkReplac (str,b,c,d) } var str = '[hide=20]Суть бага в том что прист может использовать [furl=http://cata.wowway.ru/?spell=11446]Контроль над разумом[/furl] [furl=http://cata.wowway.ru/?npc=39708] на этого моба[/furl] и использовать у него [furl=http://cata.wowway.ru/?spell=93633]вот этот спел [/furl]и этот спел дпсит в районе 200к. Всем удачи! [/hide]' alert(aHideReplac (HideReplac (str))) // Итог для выложенного примера: jQuery(this).html(aHideReplac(HideReplac(Tmp))); // Можно упростить если в одной строке не встречаются одновременно hide и ahide |
Часовой пояс GMT +3, время: 04:48. |