如何删除所有<span>标记及其各自的内容,包括其他嵌套元素?

时间:2016-05-12 15:36:08

标签: php html regex parsing

我尝试过一些解决方案,只删除标签本身,留下内容和任何其他嵌套

正则表达式,

preg_replace('/<span\b[^>]*>(.*?)<\/span>/ig', '', $page->body);

也尝试使用HTML净化器,

$purifier->set('Core.HiddenElements', array('span'));

$purifier->set('HTML.ForbiddenElements', array('span')); 

1 个答案:

答案 0 :(得分:2)

根据您的实际字符串和您尝试过的内容,您可以使用正则表达式(假设您的span标记只是span标记)。 一个更合适的&#34;然而,解决方案是使用像DomDocument这样的html解析器。

您可以使用函数document.getElementsByName("span");获取所有span元素并将其从文档对象中删除 然后使用saveHTML获取html代码。

你会得到这样的东西:

$doc = new DOMDocument;
$doc->load($yourpage);

$root = $doc->documentElement;

// we retrieve the spans and remove it from the book
$spans = $book->getElementsByTagName('span');
foreach ($spans as $span){
    $root->removeChild($span);
}

echo $doc->saveXML();