代码:
<div>
<font face="Arial, Verdana">
<span style="font-size: 13.3333px;">
<u>
Hello World
</u>
</span>
</font>
</div>
<div>
<font face="Arial, Verdana">
<span style="font-size: 13.3333px;">
<u>
Hello World2
</u>
<br>
</span>
</font>
</div>
<div>
<br>
</div>
<div>
<font face="Arial, Verdana">
<span style="font-size: 13.3333px;">
<u>
<br>
</u>
</span>
</font>
</div>
输出:-我希望得到与下面给出的完全相同的输出
<div>
<font face="Arial, Verdana">
<span style="font-size: 13.3333px;">
<u>
Hello World
</u>
</span>
</font>
</div>
<div>
<font face="Arial, Verdana">
<span style="font-size: 13.3333px;">
<u>
Hello World2
</u>
<br>
</span>
</font>
</div>
<br>
<br>
这是我尝试过的:
$html = preg_replace("/<div.*?>.*?<br.*?>.*?<\/div>/", "", $html);
但效果不佳。
请看一下代码,并向我提出建议,仅当“ div”标签下没有文字时,才能使用“ br”标签将“ div”标签从其开头替换为相应的结束标签。如上图所示,在第二个“ div”标签中。
我强烈建议使用DOM操作来完成此任务。您可以使用正则表达式,也可以使其他解决方案起作用。但是,正是出于这个原因创建了DOM操作。
PHP中有许多DOM解析器的示例。有些比其他的慢。查看此SO帖子,以获取有关DOM解析器的潜在候选人的详细列表。
您可以始终使用正则表达式-但是在这种情况下,我个人将使用正则表达式:如果您从不打算为此添加任何其他功能。如果您确实打算添加更多内容,对其进行更改,使您的脚本更具通用性等,那么我会说不要使用RegEx。原因是您要么得到一个巨大的,完全令人生畏的表达式,要么得到许多小的“一次性”表达式。与找出正确的正则表达式相比,在DOM分析器中引用函数所需的时间更少。
编辑:
我删除了我的代码片段-Splash58的答案是一个更优雅的解决方案。他的示例使用本机PHP,它的9.9更好,是9.9倍(更快,更有效,社区支持更多)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句