删除“quote”标签之间的所有内容([quote])
问题描述:
我在私人消息系统中启用了嵌套引号,但是现在我想在用户悬停邮件标题时向用户显示部分消息。删除“quote”标签之间的所有内容([quote])
要从消息中获取相关文本,我想删除报价部分。
的报价结构如下:
[quote]
[quote]
dasdasa adsadsa ds a
[/quote]
ddasd asd ads adsasd
[/quote]
如何删除德报价标签之间的一切吗?
我已经用下面的代码试过,但嵌套报价的最后部分将不删除:
while(preg_match('#\[quote=(.*?)\](.*?)\[\/quote\]#si', $message)) {
$message = preg_replace('#\[quote=(.*?)\](.*?)\[\/quote\]#si', '', $message, 1);
}
while(preg_match('#\[quote\](.*?)\[\/quote\]#si', $message)) {
$message = preg_replace('#\[quote\](.*?)\[\/quote\]#si', '', $message, 1);
}
任何建议如何删除这些引号出消息的?谢谢!
答
无需拨打preg_match()
,然后拨打preg_replace()
,此时preg_replace()
可以用一次调用替换与正则表达式匹配的所有字符串。
与正在使用正则表达式的问题是,您所报告的代码会产生以下输出:
ddasd asd ads adsasd
[/quote]
+0
完全正确。 – Arjen 2010-08-07 11:37:49
恭喜你,你已经经历了正则表达式不能被用来形容像非正规语言的*报价*语言。 – Gumbo 2010-08-07 11:28:59
但是,由于PHP使用PCRE,而不是正则表达式,它仍然是可能的。 – NikiC 2010-08-07 11:31:54