Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除除指定标签外的所有空标签_Php_Regex_Html Parsing_Regex Negation - Fatal编程技术网

Php 删除除指定标签外的所有空标签

Php 删除除指定标签外的所有空标签,php,regex,html-parsing,regex-negation,Php,Regex,Html Parsing,Regex Negation,以下PHP正则表达式将删除所有空标记: #]*>([\s]?)*]*>#u 我要删除不匹配的空标记: 我试过: #^()]*>([\s]?)*]*>#u …但它不起作用 如何添加否定?假设它是格式正确的,并且没有丢失的结束标记,这应该可以做到: <(?!div\s+style=(?:"[^"]*?\bclear:\s*both\b[^"]*"|'[^']*?\bclear:\s*both\b[^']*')\s*>\s*</div>).*?>\s*</.

以下PHP正则表达式将删除所有空标记:

#]*>([\s]?)*]*>#u
我要删除不匹配的空标记:


我试过:

#^()]*>([\s]?)*]*>#u
…但它不起作用


如何添加否定?

假设它是格式正确的,并且没有丢失的结束标记,这应该可以做到:

<(?!div\s+style=(?:"[^"]*?\bclear:\s*both\b[^"]*"|'[^']*?\bclear:\s*both\b[^']*')\s*>\s*</div>).*?>\s*</.*?>
\s*)。?>\s*
确保也使用不区分大小写标志。不过,我还是建议不要这样做


编辑:我还没有测试我的编辑,但我相当确信它更彻底。

假设它是格式良好的,并且没有缺少结束标记,这应该可以做到:

<(?!div\s+style=(?:"[^"]*?\bclear:\s*both\b[^"]*"|'[^']*?\bclear:\s*both\b[^']*')\s*>\s*</div>).*?>\s*</.*?>
\s*)。?>\s*
确保也使用不区分大小写标志。不过,我还是建议不要这样做


编辑:我还没有测试我的编辑,但我相当确信它更彻底。

一个人不能简单地用正则表达式解析/处理HTML。你把
^
弄糊涂了。它意味着主题或行的开始。您需要一个断言
(?!…)
。HTML不是一种常规语言。在某些情况下,允许缺少结束标记。换句话说,即使HTML文档缺少特定的结束标记,也可以认为它格式良好。这使得搜索空标记变得更加困难。@TylerCrompton我的html是由php脚本生成的,所以在我的情况下使用正则表达式非常好。请查看下面我对dom html解析器的评论。@PeeHaa你说得对:这显然是为了好玩。我不知道在给定内置dom处理器的情况下,我是否会实际使用正则表达式。我只知道我一直在
vi
中编辑HTML文件,当我编辑HTML文件时,我从不回避使用
s/foo/bar/
类型替换。我认为这里的人经常在每次解决方案中过度设计一些works everywhere,而不是只做处理当前任务和回家所需的工作。人们不简单地用正则表达式解析/处理HTML。你把
^
弄糊涂了。它意味着主题或行的开始。您需要一个断言
(?!…)
。HTML不是一种常规语言。在某些情况下,允许缺少结束标记。换句话说,即使HTML文档缺少特定的结束标记,也可以认为它格式良好。这使得搜索空标记变得更加困难。@TylerCrompton我的html是由php脚本生成的,所以在我的情况下使用正则表达式非常好。请查看下面我对dom html解析器的评论。@PeeHaa你说得对:这显然是为了好玩。我不知道在给定内置dom处理器的情况下,我是否会实际使用正则表达式。我只知道我一直在
vi
中编辑HTML文件,当我编辑HTML文件时,我从不回避使用
s/foo/bar/
类型替换。我认为这里的人经常在每次解决方案中都过度设计一些“无处不在”的工作,而不是仅仅做一些事情来完成当前任务并回家。我如何将它与我的正则表达式结合起来?@jason,你介意提供一些例子来说明它应该匹配什么和不应该匹配什么吗?除了匹配大多数空标记之外,我不确定你到底在做什么。太复杂了,那就是你不使用regexh解析html我该如何将它与我的regex结合起来?@jason,你介意提供一个列表,列出几个它应该匹配和不应该匹配的示例吗?除了匹配大多数空标记之外,我不确定你到底在做什么。太复杂了,你不能用正则表达式解析html