如何删除除某些指定标签之外的所有标签,包括 PHP 中的内容?



我在PHP中有一个字符串,其中包含一个完整的HTML文档(包括<script><header><footer>等标签)。

除了少数标签之外,如何删除所有这些标签及其内容?

我想保留<p><b><img><h2><em>标签以及这些标签内的内容。其他所有内容都应删除。

我真的不确定如何解决这个问题,也无法在网上找到与我类似的任何问题/解决方案。

<p>Hello <b>this</b></p> is an <span>example</span>

上面的示例应变为:

<p>Hello <b>this</b></p>

代码应删除要保留的指定标记数组中未包含的所有标记和内容。

这是一种农民的方式,但您可以一次preg_replace所需的每个标签:

$text = "<header>This is header</header><body><p>This is paragraph</p></body>";
$text = preg_replace("/<header(.*)</header>/iUs", "", $text);

您可以使用preg_replace<script><footer>

你想要的比简单的DoM操作要复杂得多。因为您需要删除指定标签的部分 innerHtml。你可以做的是通过tagName(getElementByTagName)获取所有重要元素,然后查看innerHtml。但是您对整个HTML的期望是什么?

下面是一个示例代码,用于连接要保留的指定标记的 innerHtml。但是您首先需要使用 Id 或 Class 来识别您的 HTMLdiv。完成后:

var myHtml = document.getElementById('myHtml');
var tagsToKeep = ["p", "h1"...];
var newHtml = ""
tagsToKeep.forEach((tag)=> var tagHtml = myHtml.getElementByTagName(tag);
tagHtml.forEach((element) => { newHtml += element.innerHTML + "n" });
});

最新更新