我正在尝试删除CKEditor插入到描述框中的所有空<p>
标签,但是它们似乎都不同。可能性似乎是:
<p></p>
<p>(WHITESPACE)</p>
<p> </p>
<p><br /></p>
<p>(NEWLINE) </p>
<p>(NEWLINE)<br /><br />(NEWLINE) </p>
有了这些可能性,在段落之间可以有任意数量的空格,
和<br />
标签,并且在一个段落中可以有各种空白。我也不确定
<br />
标记,从我所看到的可能是<br />
,<br/>
或<br>
。我在SO中搜索了类似的答案,但在所有答案中,我发现它们似乎只能满足其中一种情况,而不是一次全部解决。我想简单地说,我要问的是,是否可以使用正则表达式从某些没有字母数字文本或符号/标点符号的HTML中删除所有
<p>
标签? 最佳答案
好吧,与我不建议使用正则表达式解析HTML的建议相抵触,我写了一个正则表达式来做到这一点:
"#<p>(\s| |</?\s?br\s?/?>)*</?p>#"
这将正确匹配:
<p></p>
<p> </p> <!-- ([space]) -->
<p> </p> <!-- (That's a [tab] character in there -->
<p> </p>
<p><br /></p>
<p>
</p>
<p>
<br /><br />
</p>
它能做什么:
# / --> Regex start
# <p> --> match the opening <p> tag
# ( --> group open.
# \s --> match any whitespace character (newline, space, tab)
# | --> or
# --> match
# | --> or
# </?\s?br\s?/?> --> match the <br> tag
# )* --> group close, match any number of any of the elements in the group
# </?p> --> match the closing </p> tag ("/" optional)
# / --> regex end.
关于PHP RegEx删除空的段落标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14260670/