我正在编写一个“bb解析器”的问题。或者,好吧,不是解析器本身,而是修改它的nl2br。
数据库中的字符串如下所示:
文字文字
[code]代码[/ code]
文字文字
现在,nl2br在第一个“文本文本文本”后面放一个br /,然后在另一个下面放置另一个,所以在[code]标记之前有两个换行符(实际上是正确的,但不是我想要的)。
有什么方法可以限制连续输入的br数量?我似乎无法找到一个足够简单的解决方案。
先谢谢你们。
答案 0 :(得分:4)
除了之前的解决方案,我添加了另一个,因为Fredrik要求它。这将在nl2br之后而不是之前替换双<br>
。
$string = nl2br( $string );
$string = preg_replace( '/(<br(?: \\/)?>\\r?\\n?\\r?)(?=\\1)/is', '', $string );
答案 1 :(得分:0)
例如,您可以使用preg_replace将两个换行符(或更多行)替换为: - )
答案 2 :(得分:0)
您可以使用
$string = str_replace(array("\r\n\r\n", "\n\r\n\r", "\n\n", "\r\r"), array("\r\n","\n\r","\n","\r"), $string);
这可以防止双重&lt; br&gt;标签。如果一行中有两个以上的新行,那么之前建议的Preg_replace会更好。