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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了除了某些指定的内容之外,如何删除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来识别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 + "
" });
});

以上是关于除了某些指定的内容之外,如何删除PHP中包含内容的所有标记?的主要内容,如果未能解决你的问题,请参考以下文章

nginx 重写:除了空的基本 url 之外的所有内容

除了我不想在 redux-persist 中清除的内容之外,如何清除所有内容?

除了我在 htaccess 中的第一条规则之外,我如何重写所有内容?

需要一个正则表达式来删除除数字之外的所有内容

PHP PHP:删除除字母和数字之外的所有内容 - Reg表达式

PHP 删除字符串中除数字之外的所有内容