我在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" });
});