首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除html中未被删除的标记

删除html中未被删除的标记
EN

Stack Overflow用户
提问于 2015-10-08 20:14:06
回答 2查看 61关注 0票数 1

我在这里做错什么了吗?我正在尝试删除所有的标签,其中之一:style, script, pre, code

当我对最终结果进行转储时,该块中的项仍然存在。

代码语言:javascript
复制
$removes = $xpath->query('//style | //script | //pre | //code');

if($removes instanceof DOMNodeList){
    foreach($removes as $removable){
        if($removable instanceof DOMElement){
            $removable->parentNode->removeChild($removable);
        }
    }
}

$content = $this->document->getElementsByTagName('body')->item(0)->nodeValue;

var_dump($content);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-08 21:33:54

孤立地说,您的代码运行良好。可能发生的情况是您在名称空间中工作,因此您的instanceof检查应该使用完全限定名\DOMNodeList\DOMElement (注意前面的反斜杠)。

票数 2
EN

Stack Overflow用户

发布于 2015-10-08 20:54:00

也许这个解决方案对你来说很有趣:

代码语言:javascript
复制
function strip_selected_tags($text, $tags = array())
{
  foreach ($tags as $tag){
    if(preg_match_all('/<'.$tag.'[^>]*>(.*)<\/'.$tag.'>/iU', $text, $found)){
      $text = str_replace($found[0],$found[1],$text);
    }
  }

  return $text;
}

$tags = array( 'style', 'script', 'pre', 'code');
echo strip_selected_tags($text,$tags);
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33025131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档