我想知道是否有任何方法可以从 php 字符串中删除特定标签?
例如,我知道使它具有的几个功能strip_tags
,但我真正想要的是删除包含类属性或任何属性的标签,我在下面给出一个示例:
$string = '<p>Test paragraph.<p class="inner">Here is some inner text</p></p>';
如何仅删除包含类属性“内部”的标签?
如果有人能告诉我这样做的方法,我将不胜感激。
我想知道是否有任何方法可以从 php 字符串中删除特定标签?
例如,我知道使它具有的几个功能strip_tags
,但我真正想要的是删除包含类属性或任何属性的标签,我在下面给出一个示例:
$string = '<p>Test paragraph.<p class="inner">Here is some inner text</p></p>';
如何仅删除包含类属性“内部”的标签?
如果有人能告诉我这样做的方法,我将不胜感激。
没有函数可以做到这一点,为了避免使用可怕的正则表达式,最好的方法是将它加载到一个DOMDocument
类中并遍历字符串中的标签。然后,您可以根据类属性有选择地删除标签,然后将其写回字符串。
使用 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));