0

私のアプリケーションには、ユーザーが互いにメッセージを入力できるように <textarea> タグを付けた領域がいくつかあります。一部のメッセージの問題がしばらくの間私を悩ませていましたが、問題が何であるかを理解することはできませんでした. 一度にすべてのメッセージを開き、非表示のタグに保存します。ユーザーがメッセージを「開く」と、タグからのデータが収集され、ユーザーのライトボックスに表示されます。何らかの理由で、これらのメッセージの一部が開かれませんでした。

私のユーザーの 1 人は、メッセージで改行 (「Shift + Enter」を使用) を使用すると、メッセージを取得しようとしたときに Javascript が壊れることに気付きました。これはメッセージを読み取ろうとするときの問題なので、最初にメッセージが送信されたときに置き換えることができるはずです。

改行を検出して送信時に置き換えるにはどうすればよいですか?

str_replace(???,"/n",$string)
4

2 に答える 2

2

お気づきのように、javascript は文字列の途中で改行を処理できません。つまり、次の出力では js エラーが発生します...

<body onload="alert('te
st');">

このエラーを修正するには、破線の最後にバックスラッシュを追加できます...

<body onload="alert('te \
st');">

nl2bruser765476 が言ったように、テキストに対して PHP の関数を使用できます。ただし、通常は、実際に html 出力を作成しているときにのみ行うのが最善です。理由の 1 つは、ユーザーが送信済みのテキストを編集できるようにすると<br>、テキスト ボックスのいたるところに が表示され、これらの を置き換える別のスクリプトを考案する必要があるから<br>です。

ただし、ユーザーが改行 (および可能なキャリッジリターン) を送信することを本当に禁止したい場合は、この基本的な PHP コードのようなものを使用して、それらを単一のスペースに置き換えます...

str_replace(array("\r\n", "\r", "\n"), ' ', $message);

注: 検索文字列の順序は重要です。最初のパスはすべて"\r\n"の を置き換え、2 番目のパスは残りのを"\r"置き換えます"\n""\r"

于 2011-06-24T01:16:10.703 に答える
0

たぶん、この機能 はあなたが探しているものですか?改行を<br/>タグに変換します。

于 2011-06-23T21:28:07.837 に答える