Как заменить все разрывы строк в строке тегами <br/">?
Как я могу прочитать разрыв строки из значения с помощью JavaScript и заменить все разрывы строки тегами <br/>
?
Пример:
Переменная, переданная из PHP, как показано ниже:
"This is man.
Man like dog.
Man like to drink.
Man is the king."
Я хотел бы, чтобы мой результат выглядел примерно так после того, как JavaScript его конвертирует:
"This is man<br /><br />Man like dog.<br />Man like to drink.<br /><br />Man is the king."
Ответы
Ответ 1
Это превратит все результаты в HTML
str = str.replace(/(?:\r\n|\r|\n)/g, '<br>');
Если вам интересно, что?: означает. Это называется группа без захвата. Это означает, что группа регулярных выражений в скобках не будет сохранена в памяти для последующего обращения к ней. Вы можете проверить эти темы для получения дополнительной информации:
fooobar.com/questions/82790/... fooobar.com/questions/456386/...
Ответ 2
Если ваша проблема только показывает разрывы строк, вы можете сделать это с помощью CSS.
HTML
<div class="white-space-pre">Some test
with linebreaks</div>
CSS
.white-space-pre {
white-space: pre-wrap;
}
jsfiddle https://jsfiddle.net/yk1angkz/125/
Примечание. Обратите внимание на форматирование кода и отступы, так как white-space: pre-wrap
отобразит все пробелы (за исключением последней строки после текста, см. Скрипку).
Ответ 3
Без регулярного выражения:
str = str.split("\n").join("<br />");
Ответ 4
Это работает для ввода, поступающего из текстового поля
str.replace(new RegExp('\r?\n','g'), '<br />');
Ответ 5
Если принятый ответ не подходит для вас, вы можете попробовать.
str.replace(new RegExp('\n','g'), '<br />')
Это сработало для меня.
Ответ 6
Независимо от системы:
my_multiline_text.replace(/$/mg,'<br>');
Ответ 7
Также важно кодировать остальную часть текста, чтобы защитить от возможных атак script
function insertTextWithLineBreaks(text, targetElement) {
var textWithNormalizedLineBreaks = text.replace('\r\n', '\n');
var textParts = textWithNormalizedLineBreaks.split('\n');
for (var i = 0; i < textParts.length; i++) {
targetElement.appendChild(document.createTextNode(textParts[i]));
if (i < textParts.length - 1) {
targetElement.appendChild(document.createElement('br'));
}
}
}
Ответ 8
Это сработало для меня, когда значение появилось из TextBox:
string.replace(/\n|\r\n|\r/g, '<br/>');
Ответ 9
Для тех из вас, кто просто хочет разрешить макс. 2 <br>
в строке, вы можете использовать это:
let text = text.replace(/(\r?\n){2,}/g, '<br><br>');
text = text.replace(/(\r?\n)/g, '<br>');
Первая строка: найдите \n
ИЛИ \r\n
, где по меньшей мере 2 из них находятся в строке, например. \n\n\n\n
. Затем замените его на 2 br
Вторая строка: найдите все одиночные \r\n
или \n
и замените их на <br>
Ответ 10
если вы отправляете переменную из PHP, вы можете получить ее с этим перед отправкой:
$string=nl2br($string);
Ответ 11
Он заменит всю новую строку с разрывом
str = str.replace(/\n/g, '<br>')
Если вы хотите заменить всю новую строку одной строкой разрыва
str = str.replace(/\n*\n/g, '<br>')
Узнайте больше о Regex: https://dl.icewarp.com/online_help/203030104.htm это поможет вам каждый раз.
Ответ 12
Не отвечая на конкретный вопрос, но я уверен, что это кому-то поможет...
Если у вас есть вывод из PHP, который вы хотите отобразить на веб-странице с использованием JavaScript (возможно, в результате запроса Ajax), и вы просто хотите сохранить пробелы и разрывы строк, попробуйте заключить текст в <pre></pre>
блок:
var text_with_line_breaks = retrieve_some_text_from_php();
var element = document.querySelectorAll('#output');
element.innerHTML = '<pre>' + text_with_line_breaks + '</pre>';
Ответ 13
Пытаться
let s='This is man.
Man like dog.
Man like to drink.
Man is the king.';
msg.innerHTML = s.replace(/\n/g,"<br />");
<div id="msg"></div>