以下は、私がこの問題を解決するプロセスです。最終的には、側溝で転覆しそうになりました。
1.テキストエリアの改行文字は n であることを知っておく必要があります (個人的なテストでは、Enter キーを押すと n になることがわかりました。これは Linux では rn であるようです)
2. nl2br を使用する前に、マニュアルの説明をよく読んでください。一般的には n を
に変換すると理解されていますが、そうではありません。
説明については、PHP マニュアルを参照してください。
nl2br – 文字列内のすべての改行の前に HTML 改行を挿入します
すべての改行の前に「
」を挿入した文字列を返します
改行の前に
を挿入することを意味します。
W3cschool は次のように述べています:
nl2br() 関数は、文字列内の各改行 (n) の前に HTML 改行文字 (
) を挿入します。
nl2br() は
を挿入できますが、n はまだ存在します。たとえば、文字列ソース コードは次のようになります。nl2br はプログラム
n life network であるため、次のようになります。見てください
プログラム
Life.com——————-ソースコードにnがあるため改行
3. str_replace('n','
') などの php 関数 str_replace を使用します。問題は、置換が成功せず、置換されていないことです。長い間取り組んできて、テキストエリアの改行文字は n なのかとさえ疑い始めました。今考えると本当にショックですo(∩_∩)o...実際、テストしてn /を置き換えた後。これとは別に、私は行き詰まりに陥っている、根本的に何かが間違っているに違いないと直感的に言いました。ふと、シングルクォーテーションの問題なのかダブルクォーテーションの問題なのか考えて、 str_replace('n','
') を str_replace("n","
" ) に変更してみました。とひらめき、交換に成功しました。大汗!
もう一度マニュアルを開いて、一重引用符と二重引用符をもう一度読みました。PHP はまだ基本的な問題ですが、細部にまで注意を払う必要があります。
マニュアルの一重引用符と二重引用符の説明は非常に詳しく説明されています。
単純な文字列を指定する最も簡単な方法は、文字列を一重引用符 (文字 ‘) で囲むことです。
単一引用符を表すには、他の多くの言語と同様に、バックスラッシュ () でエスケープする必要があります。一重引用符の前または文字列の末尾にバックスラッシュが必要な場合は、2 つのバックスラッシュを使用します。 他の文字をエスケープしようとすると、バックスラッシュ自体も表示されることに注意してください。したがって、通常はバックスラッシュ自体をエスケープする必要はありません。
文字列を二重引用符 (") で囲むと、PHP は特殊文字のエスケープ シーケンスをより多く認識します。
表 6-1. エスケープ文字
シーケンス
の意味
n
改行 (LF または ASCII 文字 0×0A (10))
r
Enter (CR または ASCII 文字 0×0D (13))
t
水平タブ文字 (HT または ASCII 文字 0×09 (9))
\
バックスラッシュ
$
ドル記号
”
二重引用符
[0-7]{1,3}
この正規表現シーケンスは、8 進数表記で表される文字と一致します
x[0-9A-Fa-f]{1,2}
この正規表現シーケンスは、16 進表記で表される文字と一致します
さらに、他の文字をエスケープしようとすると、バックスラッシュ自体が表示されます。
————これで、textarea での行の折り返しの問題は明らかになりました。改行や nl2br の問題ではなく、PHP ではすべての転送が二重引用符でのみ処理されるということです。 。なんとも憂鬱な間違いだ。将来的には必ず心に留めておきます。