我在要删除的文件中包含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或类似的东西的正确语法是什么?
答案 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);