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