从html中删除标签不会被删除

时间:2015-10-08 20:14:06

标签: php

我在这里做错了吗?我正在尝试删除以下某个标记:style, script, pre, code

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

$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);

2 个答案:

答案 0 :(得分:2)

你的代码是孤立的,运行正常。可能发生的情况是您在命名空间内工作,因此您的instanceof检查应使用完全限定名称\DOMNodeList\DOMElement(请注意前导反斜杠。)

答案 1 :(得分:-2)

也许这个解决方案对你很有意思:

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);