从字符串中删除部分html标记

时间:2012-08-04 09:16:11

标签: javascript jquery regex

我正在尝试从网站中提取的内容中删除html标记。

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

等实例

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

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

1 个答案:

答案 0 :(得分:0)

即使使用高级语言,使用正则表达式也很难。但是您可以将html注入当前DOM或例如隐藏的iframe中。然后,您构建一个“节点walker”,沿着DOM-Tree向下移动并收集HTML-Nodes的“内部文本”。只要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。