Php 正则表达式来匹配包含特定数据的标记

Php 正则表达式来匹配包含特定数据的标记,php,regex,Php,Regex,我需要帮助制作一个注册表exp.,以匹配以下内容: 目标是匹配任何只包含或/和空格的html标记 <p><br/></p> <h1><br/></h1> <p><br/><br/></p> <span><br/><br/></span> <b><br/> <br/> </b>

我需要帮助制作一个注册表exp.,以匹配以下内容: 目标是匹配任何只包含

或/和空格的html标记

<p><br/></p>
<h1><br/></h1>
<p><br/><br/></p>
<span><br/><br/></span>
<b><br/>   <br/>    </b>
<h2><br/>   <br/>    </h2>










试试:

preg#u match_all('#]*>(\s*|()*)*#i',$html,$m);
如果您想剥离只包含注释和空格的元素,那么单独使用正则表达式将是一件痛苦的事情,甚至是不可能的事情。

尝试:

preg#u match_all('#]*>(\s*|()*)*#i',$html,$m);

如果你想去掉只包含注释和空格的元素,那将是一件痛苦的事,甚至不可能,单独使用正则表达式。

怎么样:

?你可能想看看答案。与我的问题不同,这是关于自我封闭的标签…@walter-讽刺不是针对你的,相反:另一个链接没有用。至于问题:在我看来,它们非常相似——另一个问题是寻找只有空格的标记或

标记(它们在不包含文本节点的意义上是空的)@walter当有人试图告诉您不应使用正则表达式修改HTML时,通常会提出第一个链接问题。我希望人们不要再把它扔给别人,因为公认的答案(虽然很幽默)是错误的,因为它认为这是一项不可能完成的任务。正则表达式可以解析HTML,但除了具体的HTML片段之外,很难可靠地解析HTML。对于解析任意HTML,使用解析器通常是更好的选择。关于:

?您可能想看看的答案。与我的问题不同,这是关于自关闭标签的…@walter-讽刺不是针对您的,相反:另一个链接没有用。至于问题:在我看来,它们非常相似——另一个问题是寻找只有空格的标记或

标记(它们在不包含文本节点的意义上是空的)@walter当有人试图告诉您不应使用正则表达式修改HTML时,通常会提出第一个链接问题。我希望人们不要再把它扔给别人,因为公认的答案(虽然很幽默)是错误的,因为它认为这是一项不可能完成的任务。正则表达式可以解析HTML,但除了具体的HTML片段之外,很难可靠地解析HTML。对于解析任意HTML,使用解析器通常是更好的选择。@walter,请注意,
\s
,除了制表符和空格外,还匹配换行符。如果您不想这样做,只需将其替换为
[\t]
,以仅匹配空格和制表符。请注意,属性值可以包含文字
@walter,请注意,
\s
除了制表符和空格外,还匹配换行符。如果您不希望这样做,只需将其替换为
[\t]
,以仅匹配空格和制表符。请注意,属性值可以包含文字
preg_match_all('#<([\S]+)[^>]*>(\s*|(<br\s*/>)*)*</\\1>#i', $html, $m);