3

コーディングしている「bbパーサー」で問題が発生しています。または、パーサー自体ではなく、nl2brがそれを変更します。

データベースの文字列は次のようになります。

テキストテキストテキスト

[コード]コードコードコード[/コード]

テキストテキストテキスト

ここで、nl2brは最初の「テキストテキストテキスト」の後に1つのbr /を置き、次にその下にもう1つ置くので、[code]タグの前に2つの改行があります(これは実際には正しいですが、私が望むものではありません)。

1行に入力する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

あなたが使用することができます

$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 は、2 つ以上の新しい行が連続して存在する可能性がある場合に適しています。

于 2011-05-14T10:15:31.883 に答える
0

たとえば、preg_replace を使用して、2 つ (またはそれ以上) の改行を 1 つに置き換えることができます:-)

于 2011-05-14T10:10:05.750 に答える