2012-03-31 15 views
1

私はphpを使用してフォームを作成しています。フォームにはテキストエリアがあり、データは$_POSTを使用してスクリプトに送信されます。 dbに格納されます。 問題は、テキストボックスにデータが入力されたときに、ユーザーがEnterキーを押して改行を行わずに、テキストエリアの幅の最後まで待つと、dbに保存されているテキストがすべて1行になることです彼はwrotes場合:テキストエリアの改行

を、HELLOこれは、テキストであり、TE < =テキストボックスの終わり(BRなしなし/ N) XTAREAすべてのWIDTHをカバーしています。

テキストボックスの最大幅に達した場合でも、テキストは改行されます。 私は(私のサイトのレイアウトを台無しに)結果はすべて1行であるクエリ

私はこのコードを使用してストロークをENTERレコードユーザーに管理しているとのメッセージを印刷するとき:

$cleaned_message=str_replace(Chr(13),'<br>', $cleaned_message); 

しかし、私を彼はENTERキーを使わないと何をすべきか分かりません。

答えて

1

あなたの投稿の最初の部分で説明した内容は、正常かつ正しい動作です。テキストはテキストエリアにラップされ、ユーザーが入力しない限り、1行として解釈されます。テキストエリアではなく、改行したい場所を指定するのはユーザーです。

あなたのレイアウトはおそらく壊れています。出力要素の幅を定義しようとすると(これはテキスト領域でもあると思います)、結果は出力に調整された要素ではなく、要素にラップされます。

結果が印刷されるレイアウトの一部で投稿を更新できますか?

+0

ありがとうございました。 – user1084304

1

ユーザがEnterキーを使用しない場合(改行を挿入しない場合、たとえば改行を含むテキストをコピーして貼り付けるなど)、DOMに格納されているようにデータに実際の改行はありませんフォームデータで提出されます。ブラウザは必要に応じてテキストを複数の行に分割してフィットさせますが、改行は視覚的なレンダリングだけの「ソフト」です。

ユーザが入力した改行は、CR、LFのペア(Carriage Return、Linefeed)として送信されます。既定のフォームデータエンコーディングでは、%0D%0Aを意味します。あなたがそれらで行うことは、文脈に依存します。改行は、段落区切りまたは内容重大な改行(例:郵便住所、詩、コンピュータコードなど)として保持され、解釈されたり、スペースで置き換えられたりする可能性があります。

サーバーに到達しないため、ブラウザで生成された改行はサーバー側で処理する必要はありません。

要素が(非標準)属性wrap=hardを持つ場合、ブラウザで生成された改行は実際の改行になります(ユーザーが入力した改行と区別できません)。属性wrap=offは自動折り返しを防止します。行は任意に長くでき、必要に応じて水平スクロールが表示されます。

+0

ありがとうございます。フィジカルプラスCSSジョブで修正されました。 – user1084304

関連する問題