从php字符串中删除特定标记

时间:2012-11-29 16:20:36

标签: php html-parsing

我想知道是否有办法从php字符串中删除特定标签?

我了解了它的几个功能,例如strip_tags,但我真正想要的是删除包含class属性或其他的标签,我在下面给出一个例子:

$string = '<p>Test paragraph.<p class="inner">Here is some inner text</p></p>';

如何只删除包含class属性'inner'的标记?

如果有人能告诉我这样做的方法,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

没有这样做的功能,并且为了避免使用可怕的正则表达式,最好的方法是将其加载到DOMDocument类中并迭代字符串中的标记。然后,您可以根据类属性有选择地删除标记,然后将其写回字符串。

有关文档,请参阅http://php.net/manual/en/class.domdocument.php

答案 1 :(得分:1)

使用XPath非常简单:

<?php

$string = '<p>Test paragraph.<p class="inner">Here is some inner text</p></p>';

$dom = new DOMDocument;
@$dom->loadXML($string);

$xpath = new DOMXPath($dom);

$inners = $xpath->query('//p[@class="inner"]'); //Select all p.inner in the document

foreach ($inners as $element) {
    $element->parentNode->removeChild($element); //Remove 'em
}

var_dump($dom->saveHTML($dom));