5 に答える
単純なテキスト領域を使用する代わりに、tinyMCE のような WYSIWYG エディターを試してみてください。設定を少しいじった後、ユーザーが入力した内容の HTML を作成できるようになるため、改行を取得して<br>
タグに変換し、
(x4) または x8 または必要なものに変換するタブ。すべてのコントロールを削除して、必ずしも WYSIWYG エディターのように見えないようにすることもできます。
編集: WYSIWYG (What You See Is What You Get) - tinyMCE ( http://www.tinymce.com/ ) はそのようなエディタの 1 つです。彼らのサイトの指示に従うことができますが、基本的には JS から読み込まれ、テキスト領域がエディターで上書きされます。ユーザーが保存などをクリックすると (ユーザーが完了したことを JS 経由で tinyMCE に伝えます)、表示どおりにテキストを取得し、それを html に変換します。変換されたテキストは、DB に保存するものです。保存されているのはhtmlであるため、すべての改行と空白が保持されます。このようなツールを実装するには、いくつかの JS スキルが必要です。試してみて、どのような問題が発生するかを確認してください。これは一種の過剰な解決策です。しかし、tinyMCE を適切にセットアップすれば、DB に格納されるものを完全に制御できます。
<pre>
タグまたは または を含む任意のタグでwhite-space: pre
ラップしてエコーアウトしますwhite-space: pre-wrap
。その上にも使用してくださいhtmlspecialchars
。
私はちょうどあなたのために働くかもしれないより簡単な代替案を思いつきました. テキスト領域を単純にエンコードする関数 onSubmit() をフォームに追加して、JSエンコードされたテキストをDBに保存します。document.getElementById('textArea').value = encodeURI(document.getElementById('textArea').value);
次に、そのテキストを解析して正しく表示するだけで済みます。これは、php が urldecode() 関数を使用して行うと私は信じています。ただし、正しく表示するために HTML に変換する必要がある場合は、regEx の置き換えが必要になる場合があります。