我不知道是否有任何方式从PHP字符串中删除特定标签?从PHP字符串中删除特定标签
我有几个特点,使其知识,例如strip_tags
,但我真正想要的是删除包含类属性或任何标签,我在下面给出一个例子:
$string = '<p>Test paragraph.<p class="inner">Here is some inner text</p></p>';
如何我只能删除包含class属性'inner'的标签?
如果有人能告诉我一个办法做到这一点,我会很感激。
我不知道是否有任何方式从PHP字符串中删除特定标签?从PHP字符串中删除特定标签
我有几个特点,使其知识,例如strip_tags
,但我真正想要的是删除包含类属性或任何标签,我在下面给出一个例子:
$string = '<p>Test paragraph.<p class="inner">Here is some inner text</p></p>';
如何我只能删除包含class属性'inner'的标签?
如果有人能告诉我一个办法做到这一点,我会很感激。
没有这样做的功能,为避免使用可怕的正则表达式,最好的方法是将其加载到类中,并遍历字符串中的标记。然后,您可以根据类属性有选择地删除标签,然后将其写回到字符串中。
感谢您的回答。 – oletob
@evolquez:无需迭代。检查我的答案。 –
很简单的使用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));
你需要自己解析HTML。 – NullUserException
使用DOM解析器解析您的HTML,然后修改DOM并从DOM重新创建HTML。看看[PHP DOM](http://php.net/manual/en/book.dom.php)页面。这不是你想用正则表达式解决的问题。 –
我问过类似的疑问。[此链接](http://stackoverflow.com/questions/13154595/extract-div-tags-with-specific-class-using-php)有答案。 – harry