0

我正在经历从网站提取的内容中删除 html 标签的方法。

它可能包含完整的 html 标签等实例<a href="\testlink"> tst</a>

<div class="testClass" 或像or之类的损坏的class="testClass">,我想出了一种删除完整标签的方法,可以使用javascript或jquery(正则表达式方式)删除部分标签吗?

我用来删除完整标签的代码是replace(/<(?:.|\n)*?>/gm, '')

4

1 回答 1

0

即使使用高级语言,使用正则表达式也很难做到这一点。但是您可以将 html 注入到当前 DOM 中,或者例如在隐藏的 iframe 中。然后你构建一个“节点遍历器”沿着 DOM 树向下收集 HTML 节点的“内部文本”。只要 DOM 代表它们,您就可以使用本机 DOM-Parser 获得所需的内容。

我这样做过一次,它的工作原理是这样的:

var nodes = document.getElementsByTagName('BODY');
function nodeWalker(node) {
 if(!node.hasChildNodes()) {
  return;
 }

 for(var i=0; i<node.childNodes.length; i++) {
  // filter by node type == 3 equals TEXT_NODE
  if((node.childNodes[i].nodeType == 3) && node.childNodes[i].nodeValue.length > 0) {               
   // extract content in node.childNodes[i].nodeValue
  }
  // type == 1 equals ELEMENT_NODE
  else if(node.childNodes[ i ].nodeType == 1) {
   nodeWalker(node.childNodes[i]);
  }
 }
}

有关所有可能的节点类型,请参见http://www.w3schools.com/dom/dom_nodetype.asp !

另一种方法是使用 AJAX 和服务器端 DOM-Parser。

于 2012-08-04T09:44:07.690 回答