Сообщение от 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>
Сейчас нужно будет добавить удаление пробелов между переводами строк.
Какие ещё нестандартные ситуации возможны?