删除整个div标签内容变成一个功能

时间:2014-03-17 15:49:50

标签: php function html

我想要做的是找到一个优雅的解决方案来删除某个类之间的所有内容=即你想使用php删除sometestclass类中的所有HTML。

下面的功能有点作用 - 不太好 - 它删除了我不想删除的页面的某些部分。 以下是基于原始帖子的功能(下图):

$html = "<p>Hello World</p>
         <div class='sometestclass'>
           <img src='foo.png'/>
           <div>Bar</div>
         </div>";
$clean = removeDiv ($html,'sometestclass');
echo $clean;

function removeDiv ($html,$removeClass){
$dom = new DOMDocument;
$dom->loadHTML( $html );

$xpath = new DOMXPath( $dom );
$removeString = ".//div[@class='$removeClass']";
$pDivs = $xpath->query($removeString);

foreach ( $pDivs as $div ) {
  $div->parentNode->removeChild( $div );
}

$output = preg_replace( "/.*<body>(.*)<\/body>.*/s", "$1", $dom->saveHTML() );
return $output;
}

有没有人有任何建议来改善这个结果?

the original post is here

1 个答案:

答案 0 :(得分:1)

您没有引用班级名称:

$removeString = ".//div[@class=$removeClass]";

应该是:

$removeString = ".//div[@class='$removeClass']";