Показать сообщение отдельно
  #14 (permalink)  
Старый 21.11.2011, 23:46
Аспирант
Отправить личное сообщение для ksevelyar Посмотреть профиль Найти все сообщения от ksevelyar
 
Регистрация: 21.03.2009
Сообщений: 53

До сих пор бьюсь над задачей исключения блочных тегов из парсера.


Решил отказаться от регулярок (центральное «яблоко» всё равно заменяется в этом правиле):
str ="apple <pre>apple apple apple</pre> apple";
str = str.replace(/(?:^|[^(\<pre\>)])apple([^(\<\/pre\>)])/g, "sword");
alert(str);


И перейти к массиву. Сохранить все блочные элементы в массив, заменить из заглушками, обработать текст и вставить блоки обратно.

Но снова непонятности:

str ="<pre>apple</pre><pre>orange</pre>";

 blocks = /\<(h[1-6]|pre|div|ul|)\>([\s\S]*?)\<\/\1\>/gi;   

 i=0;
 var tmp_blocks = new Array();    
    
 str = str.replace(blocks, storeblocks);
 
 function storeblocks(x) {
          tmp_blocks[i] = x; 
          return "dummy"+i;
          i=i++;  
}

alert(str);


Почему счётчик не работает?
Ответить с цитированием