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

Сообщение от trikadin Посмотреть сообщение
ksevelyar, мне кажется, он не совсем правильно работает))
Знаю, но решаю проблемы парсера постепенно. Сейчас он корректно справляется с более сложным (но всё равно синтетическим) текстом:

// Формируем абзацы.  
str = ('<p>'+str.replace(/\n\n+/g,'</p><p>')+'</p>');
    
// Вытаскиваем из них блочные элементы.   
block = /\<(h1|h2|h3|h4|h5|h6|pre|div|ul|)\>(.*?)\<\/\1\>/gi;   
str = str.replace(block, '</p>$&<p>');   
  
// Формируем преводы строк (<br />).
str = str.replace(/\n/g, "<br />");   
 
// Чистка от <p><br />.    
str = str.replace(/\<p\>\<br \/\>/g, "<p>");
// Чистка от <p></p>.   
str = str.replace(/\<p\>\<\/p\>/g, "");


<textarea id="content"><h2>Шалтай</h2>
Весной, когда растет трава,
Мои припомните слова.

<h2>Болтай</h2>
- Постараюсь, - сказала Алиса.

А летом ночь короче дня,
И, может, ты поймешь меня.</textarea>


Выводит:

<h2>Шалтай</h2>

<p>Весной, когда растет трава,<br />
Мои припомните слова.</p>

<h2>Болтай</h2>

<p>- Постараюсь, - сказала Алиса.</p>

<p>А летом ночь короче дня,<br />
И, может, ты поймешь меня.</p>


Сейчас нужно будет добавить удаление пробелов между переводами строк.

Какие ещё нестандартные ситуации возможны?

Последний раз редактировалось ksevelyar, 21.11.2011 в 08:28.
Ответить с цитированием