加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP RegEx删除空段落标记

发布时间:2020-12-13 18:28:43 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试删除所有空的 p标签CKEditor正在插入描述框,但它们似乎都有所不同.可能性似乎是: p/pp(WHITESPACE)/ppnbsp;/ppbr //pp(NEWLINE)nbsp;/pp(NEWLINE)br /br /(NEWLINE)nbsp;/p 有了这些可能性,可能会有任何数量的空白, nbsp;和 br /在段落之间标记,
我正在尝试删除所有空的< p>标签CKEditor正在插入描述框,但它们似乎都有所不同.可能性似乎是:
<p></p>

<p>(WHITESPACE)</p>

<p>&nbsp;</p>

<p><br /></p>

<p>(NEWLINE)&nbsp;</p>

<p>(NEWLINE)<br /><br />(NEWLINE)&nbsp;</p>

有了这些可能性,可能会有任何数量的空白,& nbsp;和< br />在段落之间标记,并且在一个段落中可能存在某种类型.

我也不确定< br />标签,从我看到它可能是< br />,< br />或者< br>.

我搜索了类似的答案,但是我看到的所有答案似乎都只适用于其中一种情况,而不是一次性完成.我想简单来说我要问的是,是否有一个正则表达式可以用来删除所有< p>某些HTML中的标签中没有任何字母数字文本或符号/标点符号?

好吧,与我的建议不要用正则表达式解析HTML相冲突,我写了一个正则表达式来做到这一点:
"#<p>(s|&nbsp;|</?s?brs?/?>)*</?p>#"

这将正确匹配:

<p></p>

<p> </p> <!-- ([space]) -->

<p> </p> <!-- (That's a [tab] character in there -->

<p>&nbsp;</p>

<p><br /></p>

<p>
&nbsp;</p>

<p>
<br /><br />
&nbsp;</p>

它能做什么:

# /                --> Regex start
# <p>              --> match the opening <p> tag
# (                --> group open.
#   s             --> match any whitespace character (newline,space,tab)
# |                --> or
#   &nbsp;         --> match &nbsp;
# |                --> or
#   </?s?brs?/?> --> 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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读