編集:私の投稿を読み直した後、私は問題が何であるかについて少し不明確であると思います. 言い直してみましょう:
ユーザーは、フォームのテキストエリア フィールドを使用してサイトにコメントを残すことができます。を使用してコメントに改行を追加できるはず<br />
です。次に、コメントは文字列として mysql データベースに保存され (安全のためにエスケープされます)、後でデータベースから取得され、サイトに表示されます。コメントを表示する場合、通常の改行は認識されません。
ユーザーはコメントを編集できます。その場合、元のコメントがテキストエリア フィールドに表示され、変更されます (下の画像を参照)。問題は、存在する場合<br />
、コードが XHTML 1.0 として有効でないことです (以下のエラー メッセージを参照)。
他の種類の改行を使用してコードを有効にすることはできますか? コメントに記載されているように、xml:space="preserve" と組み合わせた通常の改行は機能しません (改行は textarea フィールドに表示されますが、サイトでコメントが通常のテキストとして表示される場合は表示されません)。
元の質問:
コメントを残すためのテキストエリア フィールドを含む Web フォームがあり、<br />
. 以下に簡単な例を示します。
(ソース: shipit.se )
意図したとおりに動作しますが、W3C 検証サービスを使用すると、XHTML 1.0 トランジショナルとして検証されません。これは私が得るエラーです:
- エラー行 90、列 1587: ドキュメント タイプでは、ここに要素 "br" は許可されていません
…ription" rows="0" cols="0">Test<br />line break</textarea></dd><dt class="cha
上記の要素は、許可されていないコンテキストで見つかりました。これは、「head」内ではなく「body」セクション内の「style」要素など、誤ってネストされた要素があるか、2 つの要素が重なっている (これは許可されていません) ことを意味する可能性があります。
このエラーの一般的な原因の 1 つは、HTML ドキュメントでの XHTML 構文の使用です。暗黙的に閉じられた要素に関する HTML の規則により、このエラーはカスケード効果を生み出す可能性があります。たとえば、HTML ドキュメントの「head」セクションで「meta」と「link」に XHTML の「自己終了」タグを使用すると、パーサーが「head」セクションの終わりと「body」セクションの始まりを推測する可能性があります。 " セクション (「リンク」と「メタ」は許可されていないため、報告されたエラー)。
改行を有効なコードにする方法はありますか、または回避策を見つける必要がありますか (たとえば、テキストエリア フィールドで改行に特定のタグを使用し、<br />
後でコメントを表示するときにそれらを置き換えるなど)?