除了其中一些标签之外,我怎样才能删除html标签?

时间:2016-09-04 06:21:05

标签: php html regex string html5

我需要从php字符串中删除所有html代码,除了:

<p>
<em>
<small>

你知道,strip_tags()函数是好的,但是它会删除所有的html标签,我怎么能告诉它删除除上面那些标签之外的所有html?

2 个答案:

答案 0 :(得分:4)

  

您应该查看手册:Example #1 strip_tags() example

     

语法: strip_tags (您的字符串,允许标记)

如果传递第二个参数,则不会剥离这些标记。

GetRows

答案 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} }。