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

Категория: Java / JavaScript Комментариев: 1

Небольшая 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'

Автор: Кто-то   @   11 апреля 2009 Комментариев: 1
Метки :

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

Webmoney Z163628999150, R617151845974

Комментариев: 1

Комментарии
Ноя 9, 2009
18:27

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

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

Предыдущая запись
«
Следующая запись
»