1


サイトのモデレーターがサイトからメールを入力するときに新しい行を追加するたびに入力する必要がないように、PHP でキャリッジ リターンを改行に置き換えようとしています。改行を置き換えるためにいくつかの異なる方法を試しましたが、うまくいきませんでした。私が試した方法は次のとおりです。

preg_replace('/\r\n?/', "<br />", $str);
eregi_replace(char(13), "<br />", $str);
str_replace("\r\n", "<br />", $str);
str_replace("\n", "<br />", $str);

および nl2br 関数。

Google で 30 分ほど答えを探しましたが、何も見つかりませんでした。誰でも助けることができますか?

4

3 に答える 3

2

php.netドキュメントの非常に良い例

// Order of replacement
$str     = "Line 1\nLine 2\rLine 3\r\nLine 4\n";
$order   = array("\r\n", "\n", "\r");
$replace = '<br />';

// Processes \r\n's first so they aren't converted twice.
$newstr = str_replace($order, $replace, $str);
于 2012-07-30T14:35:37.467 に答える
1

正規表現がrandをエスケープしていますn

それ以外の

preg_replace('/\r\n?/', "<br />", $str);

これを試して:

preg_replace('/\\r\\n/', "<br />", $str);
于 2012-07-30T14:28:54.800 に答える
1

このようにテストしましたか?

$str = str_replace( "\r\n", "<br />", $str );
$str = str_replace( "\r", "<br />", $str );
$str = str_replace( "\n", "<br />", $str );

これはほとんど常に機能するはずです。"\r"の代わりに常に使用することを忘れないで'\r'ください。

于 2012-07-30T14:26:42.347 に答える