字符串过滤。需要删除<style>标记及其内容,并仅保留<body>中的内容

时间:2016-12-02 05:35:00

标签: javascript jquery html string

在我们的项目中,我们收到了DB的回复。我们以两种方式使用相同的字符串。

&#xA;&#xA;
    &#xA;
  1. 我们必须在一行中单独显示文本部分
  2. &#xA ;
  3. 我们将整个内容都放在HTML中。
  4. &#xA;
&#xA;&#xA;

我们收到与此相似的回复。

&#XA;&#XA;
 <代码>“&LT; HTML&GT;&LT; HEAD&GT;&LT;标题&GT; SomeTitle&LT; /标题&GT;&LT; /头&GT;&LT;风格&GT; a.hover {颜色:绿}立方厘米.a {color:red},pq.a {text-decoration:underline}&lt; / style&gt;&lt; body&gt;一些内容&lt; / body&gt;&lt; / html&gt;“&#xA;  
&#xA;&#xA;

我需要使用字符串操作从主体获取内容。我还需要过滤掉其他标签的所有内容。

&#xA; &#xA;

例如&#xA;最终结果应该是

&#xA;&#xA;
 一些内容&#xA;  
&# xA;&#xA;

我在某些情况下使用了text(),但有时内部的内容也会显示出来。这是我不允许的。

&#xA;&#xA;

注意:有些时候我没有这样做,所以也应该检查一下。

&# xA;&#xA;

对此有什么解决方案?

&#xA;&#xA;

有时我们也会进入体内。那么有没有办法删除该部分?

&#xA;&#xA;

例如

&#xA;&#xA;
  var str =“ &LT; HTML&GT;&LT; HEAD&GT;&LT;标题&GT; SomeTitle&LT; /标题&GT;&LT; /头&GT;&LT;风格&GT; a.hover {颜色:绿} cc.a {颜色:红},pq.a {文字修饰:underline}&lt; / style&gt;&lt; body&gt;&lt; style&gt; .hello12 {color:green}&lt; / style&gt;一些内容&lt; / body&gt;&lt; / html&gt;“;&#xA;  
&#xA;&#xA;

我应该得到“一些内容”

&#xA;

1 个答案:

答案 0 :(得分:1)

使用DOMParser并从body标记获取文字内容。可以使用querySelector获取body元素并从textContent属性获取文本内容。

&#13;
&#13;
var str = "<html><head><title>SomeTitle</title></head><style>a.hover{color:green}cc.a{color:red},pq.a{text-decoration:underline}</style> <body> Some content </body></html>";

var parser = new DOMParser();
var doc = parser.parseFromString(str, "text/html");

console.log(
  doc.querySelector('body').textContent
)
&#13;
&#13;
&#13;

仅供参考:要避免scriptstyle标记内容使用innerText属性而不是textContent属性。