我需要从php字符串中删除所有html代码,除了:
<p>
<em>
<small>
你知道,strip_tags()函数是好的,但是它会删除所有的html标签,我怎么能告诉它删除除上面那些标签之外的所有html?
答案 0 :(得分:4)
答案 1 :(得分:1)
根据您的评论,您只想在具有某些类或属性的情况下删除HTML元素。您需要建立一个DOM:
<?php
$data = <<<DATA
<div>
<p>These line shall stay</p>
<p class="myclass">Remove this one</p>
<p><a href="#somewhere">I will be deleted as well</a></p>
<p>But keep this</p>
</div>
DATA;
$dom = new DOMDOcument();
$dom->loadHTML($data, LIBXML_HTML_NOIMPLIED);
$xpath = new DOMXPath($dom);
$elements_to_be_removed = $xpath->query("//*[count(@*)>0]");
foreach ($elements_to_be_removed as $element) {
$element->parentNode->removeChild($element);
}
// just to check
echo $dom->saveHTML();
?>
要更改要删除的元素,您需要更改查询,即要删除类myclass
的所有元素,必须阅读{{1} }。