需要帮助从文件中删除某些HTML标记

时间:2011-11-04 23:27:22

标签: php preg-replace

我在要删除的文件中包含HTML。以下是示例:

<a name="0.3__Toc308117073"></a>

<h1><a name="0.3__Toc308117071"></a><font color="#3B608D" size="4" face="Cambria"><b>Gains on Sales of Qualified Small Business Stock</b></font></h1>

我想删除锚标签,我想删除h1标签及其间的所有内容。 preg_replace或类似的东西的正确语法是什么?

3 个答案:

答案 0 :(得分:1)

来自类似的部门:QueryPath

$html = htmlqp($html)
         ->top()->remove("a[name]")
         ->top()->remove("h1")
         ->top()->xhtml();

您可以使用正则表达式。但这还有更多的工作。

答案 1 :(得分:0)

此RegEx表达式匹配所有标记(从而使您使用非HTML):

/(<[^<>]+>)/

你可以做一个preg_match_all()。但实际上,您应该使用HTML解析器作为'mario'和'ThiefMaster'建议。

答案 2 :(得分:0)

您应该指定哪些部分是固定的,哪些部分可能因情况而异。我对主播名称特别感兴趣。将“0.3_ Toc”作为唯一的固定部分,还是该数字的一部分也是固定的? 0.2 _Toc?

怎么样?

如果你可以使用两个正则表达式,那么按顺序使用这些模式:

<h1><a name="0.3__Toc\d*">.*</a>.*</h1>
<a name="0.3__Toc\d*">.*</a>

如果你绝对必须在一个正则表达式中做到这一点,你将不得不用一些外观来推进这两个案例。这很痛苦(但我很有趣)。 :)

编辑:好的。我假设你只想要带有那种锚的h1标签以及那种类型的任何松散锚。如果目标是删除包含内容的所有h1标签以及所有锚标签,则可以使用此标记:

(<h1>.*</h1>)|(<a name=".*">.*</a>)

这就是对

的调用
preg_replace('/(<h1>.*<\/h1>)|(<a name=".*">.*<\/a>)/im', '', $htmlToStrip);