Как заменить все разрывы строк в строке тегами?



как я могу прочитать разрыв строки из значения с помощью 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."
382   10  

10 ответов:

это превратит все возвращается в HTML

str = str.replace(/(?:\r\n|\r|\n)/g, '<br>');

Если ваша забота просто отображает разрывы линий, вы можете сделать это с помощью 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 появится все пробелы (за исключением последней новой строки после текста, см. fiddle).

без регулярных выражений:

str = str.split("\n").join("<br />");

это работает для ввода, поступающего из текстового поля

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

если принятый ответ не работает для вас, то вы можете попробовать.

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

это сработало для меня.

независимо от системы:

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

также важно закодировать остальную часть текста для защиты от возможных атак внедрения скрипта

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

для тех из вас, кто просто хочет привести максимум. 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>

это сработало для меня, когда значение пришло из текстового поля:

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

Если вы отправляете переменную из PHP, вы можете получить ее с помощью этого перед отправкой:

$string=nl2br($string);

Comments

    Ничего не найдено.