You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript提取经htmlentities编码的HTML字符串纯文本

解决JavaScript提取双重编码HTML字符串的纯文本问题

别发愁,这个问题出在你的字符串是双重HTML编码的,所以直接用toString、unescape这类方法肯定不管用。我给你一个在AJAX回调里就能用的靠谱方案:

  • 第一步:先把字符串解码两次,还原出原始的HTML结构
  • 第二步:利用DOM元素的原生能力提取纯文本

具体代码示例:

// 假设AJAX返回的编码字符串是你提供的这段
const encodedStr = '<p><b><u style="background-color: rgb(255, 255, 0);"><font face="Comic Sans MS">adsasdasdasdasdas</font></u></b></p>';

// 在AJAX的success回调里调用这个方法
function getPlainText(encodedContent) {
  // 第一次解码:把&转成&,得到单编码的HTML实体
  let onceDecoded = encodedContent.replace(/&/g, '&');
  // 第二次解码:借助DOM元素把HTML实体转成真实标签,再提取文本
  const tempDiv = document.createElement('div');
  tempDiv.innerHTML = onceDecoded;
  // textContent兼容性比innerText更好,trim去掉多余空白
  return tempDiv.textContent.trim();
}

// 提取纯文本并追加到页面
const plainText = getPlainText(encodedStr);
document.getElementById('target-container').textContent = plainText;

为啥之前的方法无效?因为你的字符串经历了两次编码:PHP的htmlentities先把<转成&lt;,之后可能又被转了一次(比如输出时再次编码),最终变成了&amp;lt;。必须解码两次才能拿到真实的HTML结构,再用DOM元素提取文本是最稳妥的方式——比自己写正则替换靠谱多了,毕竟正则很难覆盖所有HTML标签的边界情况。

内容的提问来源于stack exchange,提问作者Ameer Hamza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:00:40