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

时间:2018-02-04 16:05:44

标签: php html regex tags

我在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>

代码应删除所有不包含在指定标记数组中的标记和内容。

2 个答案:

答案 0 :(得分:0)

您想要的远比简单的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" });
});

答案 1 :(得分:0)

这是一种农民方式,但您可以public static void main(String[] args) throws IOException{ FileOutputStream out = null; String content = "hello"; byte[] contentBytes = content.getBytes(); try{ out = new FileOutputStream("output.txt"); out.write(contentBytes); }catch(FileNotFoundException e){ } finally{ if (out != null) out.close(); } 一次只需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>