我有以下正则表达式:
$html = '<p></p><p>Lorem ispum...</p><p> </p><p>;nbsp</p>';
$pattern = "/<p[^>]*><\\/p[^>]*>/";
echo preg_replace($pattern, '', $html );
如果<p>
标记实际为空,则仅删除<p></p>
标记,即
。如果其中包含其他隐身副本,如何将其删除,例如.table.blue
?
答案 0 :(得分:0)
有几种可能的空白空间,甚至更多的可能性是空的&#34; (例如,<p><em></em></p>
是空的吗?或者不是?)。
还要考虑使用<p class="para">
或<p id="chief">
的可能性。
很大程度上取决于文本的来源。在某些情况下,Microsoft Word会输出 
(我可以并且确实没有记住它们 - 抱歉)。
现在reasonable的可能性可能是使用#<p>(\\s| )*</p>#mis'
这样的正则表达式来匹配多个空行。
但请记住,这种必要条件会迅速变为unreasonable - 例如,类部分可能会强迫您使用#<p[^>]*>(\\s| )*</p>#mis'
等等 - 所以,您可能想要开始研究而是一个XML解析器。
答案 1 :(得分:0)
我假设退格,你的意思是空格,而;nbsp&
应该是
并建议:
$pattern = "/<p[^>]*>(\s| )*<\\/p[^>]*>/";
\s
匹配任何空格字符
该模式在\s
标记内与|
或(
)*
任意(<p>
)次数匹配。