Как в js сохранить переносы строк и отображать теги как текст?
Есть поле, в которое админ (это важно, потому что это не случайный пользователь-вредитель) вводит какой-то текст. Обрабатывать текст можно только со стороны JS (браузера). Данные после нажатия на кнопку "сохранить" делают JSON.stringify и сохраняются в файл. Затем таким же образом достаются из файла и делают JSON.parse. Мне нужно сделать так, чтобы в выводе было то, что было в textarea. На пару с chatgpt у меня ничего не получается. На данный момент я дошёл до такого результата:
![]()
function escapeHTML(text) {
return text.replace(/</g, "<").replace(/>/g, ">").replace(/&/g, "&");
}
то есть в результате у меня ничего не работает из того, что я планировал) Я пытался делать замену \n на <br> , но этот тег тоже залетает под редактуру... |
accountnujen,
:-?
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<p id="p"></p>
<script>
let str = `asd
asd <jopa></jopa> <h1></h1>`;
let json = JSON.stringify(str);
let txt = JSON.parse(json);
p.outerText = txt;
</script>
</body>
</html>
|
Так а что в конечной строке то должно быть? \n или <br>
Если <br>, то сначала заменяешь < и > на < и >, а потом \n на <br>. И только сначала & заменить на & а потом уже все остальное
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<p id="p"></p>
<script>
function escapeHTML(text) {
return text.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/\n/g, '<br>');
}
let str = `asd
asd <jopa></jopa> <h1></h1>`;
let json = JSON.stringify(escapeHTML(str));
let txt = JSON.parse(json);
p.innerHTML = txt;
</script>
</body>
</html>
|
| Часовой пояс GMT +3, время: 22:19. |