为了账号安全,请及时绑定邮箱和手机立即绑定

获取没有 HTML 标签的文本

获取没有 HTML 标签的文本

莫回无 2023-03-10 16:41:54
我正在从 Wordpress api 返回帖子,目前正在获取一个包含帖子的数组。我可以返回一个字符串,但它包含 HTML 标记。我使用过 textContent 和 innerText,但似乎没有用。我目前正在返回<p> info: 111,<br /> key: fdfd ,<br /> city: ,<br /> suburb: ,<br /> job:  </p><p>最好的方法是什么 top 只返回没有and的内容<br>?
查看完整描述

3 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

您需要将该字符串转换为 HTML 页面,然后定位“p”元素并提取其文本。就像是:


var p = "<p> info: 111,<br /> key: fdfd ,<br /> city: ,<br /> suburb: ,<br /> job:  </p>"

var parser = new DOMParser();

var htmlDoc = parser.parseFromString(p, 'text/html');

console.log(htmlDoc.body.getElementsByTagName("P")[0].innerText);


查看完整回答
反对 回复 2023-03-10
?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

  这更像是对另一种常见方式的警告。


ATD 提到的 的常见替代方法DOMParser()是创建一个元素,将其添加为innerHTML并使用 获取它textContent。


let tParser = document.createElement('div');

tParser.innerHTML = "<p> info: 111,<br /> key: fdfd ,<br /> city: ,<br /> suburb: ,<br /> job:  </p>";

console.log(tParser.textContent)


但请注意使用innerHTML. 一切都被解释为 HTML 并从您的站点执行。这意味着,不要将它添加到 DOM 或更好,尽量完全避免它。


此外 MDN 提到以下内容:


如果您的项目将接受任何形式的安全审查,那么使用 innerHTML 很可能会导致您的代码被拒绝。例如,如果您在浏览器扩展中使用 innerHTML 并将扩展提交到 addons.mozilla.org,它将不会通过自动审核流程。


查看完整回答
反对 回复 2023-03-10
?
湖上湖

TA贡献2003条经验 获得超2个赞

您的问题已经得到解答:



function extractContent(s) {

  var span = document.createElement('span');

  span.innerHTML = s;

  return span.textContent || span.innerText;

};

    

alert(extractContent("<p>Hello</p><a href='http://w3c.org'>W3C</a>"));


查看完整回答
反对 回复 2023-03-10
  • 3 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信