Аналог PHP'шной nl2br в JavaScript

Небольшая JavaScript-функция для замены в тексте символов переноса строки на теги <br>

Эта функция, разработанная в рамках проекта php.js, является JavaScript-имплементацией PHP'шной nl2br. Автор — Kevin van Zonneveld.

Код функции:

function nl2br (str, is_xhtml) {
 // http://kevin.vanzonneveld.net
 // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
 // + improved by: Philip Peterson
 // + improved by: Onno Marsman
 // + improved by: Atli ??r
 // + bugfixed by: Onno Marsman
 // + input by: Brett Zamir (http://brettz9.blogspot.com)
 // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
 // * example 1: nl2br('Kevin\nvan\nZonneveld');
 // * returns 1: 'Kevin<br />\nvan<br />\nZonneveld'
 // * example 2: nl2br("\nOne\nTwo\n\nThree\n", false);
 // * returns 2: '<br>\nOne<br>\nTwo<br>\n<br>\nThree<br>\n'
 // * example 3: nl2br("\nOne\nTwo\n\nThree\n", true);
 // * returns 3: '<br />\nOne<br />\nTwo<br />\n<br />\nThree<br />\n'

 var breakTag = '';

 breakTag = '<br />';
 if (typeof is_xhtml != 'undefined' && !is_xhtml) {
 breakTag = '<br>';
 }
 return (str + '').replace(/([^>]?)\n/g, '$1'+ breakTag +'\n');
}

Примеры использования:
Пример 1:

nl2br('Один\nДва\nТри');

Вернет

'Один
\nДва
\nТри'

Пример 2:

nl2br("\nОдин\nДва\n\nТри\n", false);

Вернет

'<br>\nОдин<br>\nДва<br>\n<br>\nТри<br>\n'

Пример 3:

nl2br("\nОдин\nДва\n\nТри\n", true);

Вернет

'
\nОдин
\nДва
\n
\nТри
\n'

Поблагодарить автора

One Response to Аналог PHP'шной nl2br в JavaScript

  1. Заметьте, в ней логическая ошибка — она оставляет все же символ перевода строки, вставляя ПЕРЕД ним тег. Нелогично никак, пришлось фиксить в исходниках и убирать этот перевод

Оставить комментарий

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>