2011-06-23 22 views
0

私は< textarea>タグを持っている私のアプリケーションにいくつかの領域を持っているので、ユーザーは互いにメッセージを入力できます。いくつかのメッセージの問題がしばらく私を悩ませていましたが、私は問題が何であったか決して理解できませんでした。私は一度にすべてのメッセージを開いて隠れたタグに保存します。ユーザーがメッセージを開くと、タグからのデータが収集され、ユーザーのライトボックスに表示されます。何らかの理由で、それらのメッセージの一部を開けませんでした。文字の置換え:ブレークライン

私のユーザーの1人は、メッセージ内で改行( 'shift + enter'を使用)を使用すると、メッセージを取得しようとしたときにJavascriptを壊すことに気付きました。これはメッセージを読むときに問題になるだけなので、メッセージが最初に送信されたときにそれを置き換えることができます。

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

str_replace(???,"/n",$string) 
+0

あなたは '' str_replace( "\ n"、???、$ string) ''を意味しますか?改行文字を何に置き換えたいですか? – grai

答えて

2

あなたが発見したように、JavaScriptは改行文字列を処理できません。言い換えると、次の出力がuser765476として

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

...

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

あなたはこのエラーを修正するために破線の末尾にバックスラッシュを追加することができます... JSエラーが発生しますPHPのnl2br関数をテキストに使用することができます。しかし、追加するには、実際にはhtml出力を構築している間にのみ行うのが普通です。理由の1つは、既に投稿したテキストをユーザーが編集できるようにしておけば、テキストボックスに<br>がどこにでもあることがわかるので、それらを置き換える別のスクリプトを工夫する必要があります。

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

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

注:検索文字列の順序は重要です。 (編集:私は忘れています"\r"はIEのjavascriptで認識されていますが、ほかのブラウザでは認識されません)。

0

this function は、あなたが探しているものでしょうか?改行を<br/>タグに変換します。

関連する問題