我在这里做错了吗?我正在尝试删除以下某个标记: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);
答案 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);