これはだまされているように見えるかもしれませんが、そうではありませんのでご安心ください。私は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"など)がありません。
nl2br()
HTML出力を生成するために使用していますが、それだけでは不十分です。結果は次のとおりです。
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を押すと、後で文字列を使用して実行したいことが機能します。だから私は上記のフォーマットが必要であることを知っています。