3

我正在编码的“bb解析器”有一些问题。或者,好吧,不是解析器本身,而是 nl2br 修改它。

数据库中的字符串如下所示:

文字文字文字

[code]code 码码[/code]

文字文字文字

现在,nl2br 在第一个“文本文本文本”之后放置一个 br /,然后在其下方放置另一个,因此 [code] 标记之前有两个换行符(这实际上是正确的,但不是我想要的)。

有什么办法可以限制连续输入多少个br?我似乎找不到足够简单的解决方案。

提前谢谢各位。

4

3 回答 3

4

除了以前的解决方案,我添加了一个不同的解决方案,因为 Fredrik 要求它。这将<br>在 nl2br 之后而不是之前替换 double 。

$string = nl2br( $string );
$string = preg_replace( '/(<br(?: \\/)?>\\r?\\n?\\r?)(?=\\1)/is', '', $string );
于 2011-05-14T15:45:38.227 回答
0

例如,您可以使用 preg_replace 将两个换行符(或多个)替换为一个 :-)

于 2011-05-14T10:10:05.750 回答
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);

这可以防止双 <br> 标签。如果连续有两个以上的新行,则 Preg_replace 如前所述会更好。

于 2011-05-14T10:15:31.883 回答