2012-04-26 12 views
1

私は、ユーザーがテキストエリアにメモを入力できるアプリケーションを構築しています。ノートは、データベースに入力されるとコード化されます。返された値をデコードすると、nl2br関数は機能しません。 \ r \ nをbrタグに置き換えているわけではありません。テキストをエンコード/デコードしていないときは動作します。テキストがデコードされた後に r nを出力しています - PHP

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

私がテキストエリアに入力した場合:

Hello 
World 

それはそれをコード化し、その後

Hello\r\nWorld. 
をデコードしたときに返します

私はstr_replaceを実行できますが、ブラウザによっては、\ r \ nの代わりに\ nまたは\ rを使用することがあります。

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

+2

データベースに格納するときにテキストをエンコードする必要がありますか? – ianbarker

+0

このチュートリアルのコードは、改行を '' \ r \ n ''に変換しません。 –

+0

ianbarker:ノートにはプライベートデータが含まれています。セキュリティのために、それは必要です。 – steeped

答えて

3

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

あなたは...

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

をテキストエリアに配置するテキスト、使用を変換する場合は、テキスト領域の外側に配置するテキスト、使用を変換する場合は...

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

別々のブラウザでは何でも使用できますが、すべて「\ n」と読むことができます。しかし、サイドノートでは、オペレーティングシステムは "\ r \ n"と "\ n"を判断します。単に "\ n"を使用してください。だから "\ r \ n"を "\ n"に置き換えてください。または、「\ r \ n」、のいずれかを使用するだけで、brタグをテキストエリアタグに入れない限り、すべて設定されます。

マック=のLinux = \ nは のWindows = \ rを\ nは

+0

ありがとうございます!!!!!! – steeped

-1

stripslashes($text)を使用してそれらを削除できます。しかし、なぜスラッシュが追加されたのかを知ることをお勧めします。 addslashesを使用していますか?

+0

これはまったく答えではありません – Starx

+0

addslashesを使用していません。入力キーを押すと自動的に\ r \ nが追加され、テキストエリア内の新しい行に移動します。 – steeped

+0

ええ、ブラウザは "\ r \ n"ではなく実際の\ r \ n文字として送信します。サーバーの最後に何かが追加されています。それは 'addslashes'や" magic quotes "でもかまいません。 –

0

zend studio 7.2.0を使用して、Windowsオペレーティングシステムでデコードされた文字列Hello\r\nWorld.を確認しました。私はnl2br()がどちらの場合も正常に動作していることを発見した\r\n and \n。デコードされた文字列を二重にチェックする必要があります。あなたがそれをエンコードする前にaddslashes()をしているかもしれません。そうなら、nl2br()を使う前にstripslashes()を使わなければなりません。

+0

stripslashesはHello \ r \ nWorldをHellornWorldにするだけです。 – steeped

+0

私は<?php $ str = "Hello \ r \ nWorld"をやっています。 echo nl2br($ str); '出力はHelloです
ワールド – Dev

関連する問題