在服务器端使用 NodeJS 将 html 转换为纯文本

问题描述

在服务器端,使用 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>

纯文本(我想要的纯文本):&lt;h1 &60;haha i am big &lt;/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 += "&nbsp;"
    }
    else if (current_char == '<'){
      result += "&lt;"
    }
    else if (current_char == '>'){
      result += "&gt;"
    }
    else if (current_char == '&'){
      result += "&amp;"
    }
    else if (current_char == '"'){
      result += "&quot;"
    }
    else if (current_char == "'"){
      result += "&apos;"
    }
    else{
      result += current_char;
    }
  }
  return result;

}