问题描述
在服务器端,使用 Nodejs。我收到一条包含 HTML 的文本消息。我想要一个将 html 转换为纯文本的函数。并且请不要告诉我添加标签 <plaintext>
或 <pre>
。 (nodejs中没有convert_to_html函数)
socket.on('echo',(text) => {
plaintext = convert_to_html(text);
socket.emit('echo',{
message: plaintext
});
});
理想结果:
输入:<h1>haha i am big</h1>
纯文本(我想要的纯文本):<h1 &60;haha i am big </h1 &60;
输出:<h1>haha i am big</h1>
当前结果:
输入:<h1>haha i am big</h1>
明文:<h1>haha i am big</h1>
输出:哈哈我很大
解决方法
您可以在浏览器端使用 insertAdjacementHTML 方法,这里举个例子
socket.on("response",function (msg) {
const messages = document.getElementById("messages");
messages.insertAdjacentHTML("beforebegin",msg);
window.scrollTo(0,document.body.scrollHeight);
});
,
仍然没有合适的解决方案。当我等待一个时,我将使用保留字符作为临时解决方案。 https://devpractical.com/display-html-tags-as-plain-text/#:~:text=You%20can%20show%20HTML%20tags,the%20reader%20on%20the%20browser。
function parse_to_plain_text(html){
var result = "";
for (var i = 0; i < html.length; i++) {
var current_char = html[i];
if (current_char == ' '){
result += " "
}
else if (current_char == '<'){
result += "<"
}
else if (current_char == '>'){
result += ">"
}
else if (current_char == '&'){
result += "&"
}
else if (current_char == '"'){
result += """
}
else if (current_char == "'"){
result += "'"
}
else{
result += current_char;
}
}
return result;
}