我在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来识别HTML div。完成后:
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" });
});