Небольшая 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'
|
|
Webmoney Z163628999150, R617151845974
|
18:27
Заметьте, в ней логическая ошибка — она оставляет все же символ перевода строки, вставляя ПЕРЕД ним тег. Нелогично никак, пришлось фиксить в исходниках и убирать этот перевод