これは重複しているように見えるかもしれませんが、そうではありません。私は SO と Web の残りの部分の両方で問題の答えを検索しましたが、結局同じ不十分な「解決策」を何度も見つけることになったのです。とにかく、ここにあります:
私はテキストエリアからのユーザー入力を MySQL データベースに保存しています (WordPress 環境内ですが、この問題には関係ないと思います)。後で DB から取得され、サイトのバックエンドの管理者に表示されます。この問題は、ユーザーが改行を含むテキストを送信すると (つまり、Enter キーを押すと) 発生します。
サンプル文字列は次のようになります。
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!
Greetings,
Bill
文字列には行末文字 ("\n"、"\r" など) が含まれていません。
HTML 出力を生成するためにこれを使用していますnl2br()
が、それだけでは不十分です。結果は次のようになります。
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br />
<br />
Greetings,<br />
Bill
私の理解する限りでは、nl2br()
タグを挿入し、そもそも改行を置き換えるものではないため、これは予想される結果ですか?
ただし、必要な形式は次のようになります。
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br /><br />Greetings,<br />Bill
文字列に「\n」などの EOL 文字が含まれている場合は、str_replace()
またはのいずれかを使用してそれをヒットしpreg_replace()
て終了しますが、そもそも文字がない場合、これらの関数のどちらにどの針を通すかはわかりません。
DB 内の関連フィールドに手動でアクセスし、改行ごとに Backspace キーを押すと、後で文字列に対して実行したい操作を実行できます。したがって、上記の形式が必要であることはわかっています。
ベストアンサー1
ベンの解決策許容できるが、str_replace()はるかに速いpreg_replace()
$buffer = str_replace(array("\r", "\n"), '', $buffer);
CPU パワーの使用量が少なくなり、世界の二酸化炭素排出量が削減されます。