我如何用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."

当前回答

不管系统如何:

my_multiline_text.replace(/$/mg,'<br>');

其他回答

当值来自文本框时,这对我有用:

string.replace(/\n|\r\n|\r/g, '<br/>');

它将用break替换所有新的行

str = str.replace(/\n/g, '<br>')

如果你想用单行换行替换所有新行

str = str.replace(/\n*\n/g, '<br>')

阅读更多关于Regex的信息:https://dl.icewarp.com/online_help/203030104.htm 这对你每次都有帮助。

为了防止可能的脚本注入攻击,对其余文本进行编码也很重要

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'));
        }
    }
}

如果公认的答案不适合你,那么你可以尝试一下。

str.replace(new RegExp('\n','g'), '<br />')

这对我很管用。

没有回答具体的问题,但我相信这将有助于某人…

如果你有来自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>';