我想从我的wordpress Feed中删除标签,但保留段落。
strip_tags($content, '<p>' );
这很好但我不想保留处理图片标题的段落......它们看起来像这样:
<p class="wp-caption-text">blah blah blah</p>
那么,我如何剥离持有的标签,比如类属性?
非常感谢。
答案 0 :(得分:2)
最简单的方法是使用DOM解析库。 DOMDocument
内置于PHP中,非常适合DOM操作。 DOMXPath
有助于查询。
$dom = new DOMDocument;
$dom->loadHTML($yourHTML);
$xpath = new DOMXPath($dom);
foreach ($xpath->query("//*[not(p)]|.wp-caption-text") as $node) {
$node->parentNode->removeChild($node);
}
请注意,这也适用于strip_tags
。
答案 1 :(得分:1)
编辑:这实际上并不是OP想要的解决方案,但是回答了被问到的问题。
不幸的是,你不能直接用strip_tags做这件事。
你可以使用DOMDocument,然后使用strip_tags:
$DOM = new DOMDocument();
$DOM->loadHTML($content);
foreach($DOM->getElementsByTagName("p") as $p)
{
foreach($p->attributes as $attr)
$p->removeAttributeNode($attr);
}
$content = $DOM->saveHTML();
//Uncommenting this will then remove the tag as well.
//$content = strip_tags($content, 'p');