【发布时间】:2015-05-14 23:30:25
【问题描述】:
有一个博客,用户可以在其中发布他们的消息。他们可以使用字体 BB 代码。问题 - 在此字体 BB 代码之间发布文本时,当前脚本不会删除多个换行符(它适用于明文)。
所以我的想法是添加一个 preg_replace 函数,以便从字体 BB 代码中发布的文本中删除多余的行。字体 BB 代码以:[font#ABCDEF] 开头,以 [/font] 结尾。
例如:
[font#FF0000]
This text is in red.
Hello world. How are you?
Good, thanks.
[/font]
在 preg_replace 之后最多应该留下 2 个换行符(例如,如果有人添加了 6 个换行符,则应该减少到 2 个;如果有人添加了 1 或 2 个换行符,则应该在输入时留下,即. 1 或 2) 等。
这是我目前的尝试,但它似乎没有工作,即使它应该关闭正确的解决方案,我希望:
$text=preg_replace("#(\[font[^\]]*?\])[\r\n ]+#i", "\\1", $text);
$text=preg_replace("#[\r\n ]+(\[/font\])#i", "\\1", $text);
$text=preg_replace("#(\[/font\])[\r\n]{2,}#i","\\1\n", $text);
(理想情况下最好不要在开始 [font#ABCDEF] 标记之后和结束 [/font] 标记之前留下任何换行符,因为那里不需要换行符完全没有。
【问题讨论】:
-
#\R+#匹配任何换行符序列一次或多次