是否有人知道修改后的strip_tags函数是否存在,您可以在其中指定要剥离的标记的ID,并且可能还指定删除标记中的所有数据。举个例子:
<div id="one">
<div id="two">
bla bla bla
</div>
</div>
Running:
new_strip_tags($data, 'two', true);
必须返回:
<div id="one">
</div>
那里有类似的东西吗?
答案 0 :(得分:8)
您可以使用DOMDocument和DOMXPath。
<?php
$html = '<html><head><title>...</title></head><body>
<div id="one">
<div id="two">
bla bla bla
</div>
</div>
</body></html>';
$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
$doc->loadhtml($html);
$xpath = new DOMXPath($doc);
$ns = $xpath->query('//div[@id="two"]');
// there can be only one... but anyway
foreach($ns as $node) {
$node->parentNode->removeChild($node);
}
echo $doc->savehtml();
答案 1 :(得分:1)
这不完全是strip_tags的作用,它剥离了标签但留下了内容。你想要的是这样的:
function remove_div_with_id($html, $id) {
return preg_replace('/<div[^>]+id="'.preg_quote($id, '/').'"[^>]*>(.*?)<\/div>/s', '', $html);
}
请注意,这对嵌套标记无效。如果需要,可能需要使用HTML的DOM表示。