1

ユーザーがテキストエリアにメモを入力できるアプリケーションを構築しています。メモは、データベースに入力されるとエンコードされます。戻り値をデコードすると、nl2br 関数が機能しません。\r\n を br タグに置き換えていません。テキストをエンコード/デコードしない場合は機能します。

次のコードを使用して情報をエンコード/デコードしています: http://www.myphpscripts.net/tutorial.php?id=9

テキストエリアに入ると:

Hello  
World

それをエンコードし、デコードすると返されます

Hello\r\nWorld.

str_replace を実行できますが、ブラウザによっては、テキストエリアで \r\n の代わりに \n または \r が使用される場合があることがわかりました。

良い解決策がわからない...助けてください!ありがとうございました!

4

3 に答える 3

3

変換するテキストが「<textarea>」にある場合は、「<br />」を使用しないでください。

テキストを変換してテキスト領域に配置する場合は、...

str_ireplace("\r\n", "\n", $db_string); //or something similar

テキストをテキスト領域の外に配置するように変換する場合は、...

str_ireplace(array("\r\n", "\n", "\r"), '<br />', $db_string);

個別のブラウザは何でも使用しますが、すべて「\ n」だけを読み取ることができると思います。ただし、補足として、オペレーティングシステムは「\r\n」と「\n」を決定します。「\n」を使用するだけです。したがって、「\r\n」を「\n」に置き換えます。または、「\r\n」のままにして、どちらかを使用します。テキストエリアタグに br タグを入れない限り、すべて設定されます。

Mac = Linux = \n Windows = \r\n

于 2012-04-26T16:51:58.247 に答える
0

Hello\r\nWorld.zend studio 7.2.0を使用して、Windowsオペレーティングシステムでデコードされた文字列を確認しました。nl2br()はどちらの場合も正常に機能していることがわかりまし\r\n and \nた。デコードされた文字列を再確認する必要があります。エンコードする前にaddslashes()を実行している可能性があります。その場合は、nl2br()を使用する前にstripslashes()を使用する必要があります。

于 2012-04-26T16:35:28.260 に答える
-1

stripslashes($text)それらを取り除くために使用できます。ただし、スラッシュが追加された理由を調べることをお勧めします。を使用していaddslashesますか?

于 2012-04-26T16:11:13.930 に答える