【发布时间】:2012-12-27 07:57:51
【问题描述】:
以下 PHP 正则表达式删除所有空标签:
#<[^\/>]*>([\s]?)*<\/[^>]*>#u
我想删除不匹配的空标签:
<div style="clear:both"></div>
我试过了:
#^(<div style="clear:both"></div>)<[^\/>]*>([\s]?)*<\/[^>]*>#u
...但是没有用。
如何添加否定句?
【问题讨论】:
-
使用正则表达式不简单地解析/处理 HTML。
-
你在混淆
^。这意味着主题或行的开始。你需要一个断言(?!...)。 -
HTML 不是常规语言。在某些情况下,结束标签允许missing。换句话说,即使缺少特定的结束标记,HTML 文档也可以被认为是格式正确的。这使得搜索空标签变得更加困难。
-
@TylerCrompton 我的 html 是由 php 脚本生成的,所以在我的情况下使用正则表达式非常好。请在 dom html 解析器上查看我的 cmets。
-
@PeeHaa 你说得对:这显然是为了好玩。我不知道在给定内置 dom 处理器的情况下,我是否真的会使用正则表达式。我只知道我一直在编辑
vi中的 HTML 文件,而且当我这样做时,我从不回避使用s/foo/bar/类型替换。我认为这里的人们经常过度设计一些随时随地都能工作的解决方案,而不是只做需要做的事情来处理当前任务并回家。
标签: php regex html-parsing regex-negation