0

HTML で実際のコードとして表示するためにコードをエスケープした場合 (コード スニペットの例など)、データベースに保存してからエディター (HTML ページ) に戻すと、HTML として表示されます。 、エスケープされたテキストとは対照的に。

テキストに textarea タグを含めると、編集領域が途中で閉じられ、保存時に残りの部分が切り落とされるため、問題が発生します (タグを閉じない場合はそれ以上)。

私の質問は次のとおりです。これはブラウザ側で意図された動作ですか? -> テキストをエスケープする必要があります (おそらくコードと事前タグ)? 変更したいときはいつですか?それとも私は何か間違ったことをしていますか?

* 注: これを使用しているのは私だけであり、ほとんどが学習用であるため、ブラウザーで使用するときに HTML を処理し、予想通りの方法。

4

4 に答える 4

1

私の経験では、ある種の特殊文字エスケープを行う必要があります。PHP では、この関数は htmlspecialchars() です。他の機能については知りませんでした。ただし、ブラウズでは、エンコードされた文字がテキストエリアに正しく表示されます。

于 2008-10-24T07:09:03.697 に答える
1

@Bob: htmlentities()はhtmlspecialchars()と同じではありません

htmlentities() は、ASCII コードを持つすべての文字をそのコードに変換します。htmlspecialchars() は、&、引用符、および < または > など、HTML で特別なもののみを実行します。

これは非常に大きな違いであり、いくつかのことが壊れる可能性があり、htmlentities() を使用すると結果が膨大になる可能性もあります。

于 2008-10-24T07:23:43.790 に答える
0

これはブラウザ側の意図した動作ですか? はい、ブラウザは (エスケープされていない) HTML コードをページに属する HTML タグとして解釈し、それらに基づいて動作します。

だから私はテキストをエスケープする必要があります (おそらくコードと pre タグ)? はい、Darryl Hein が言ったように、htmlspecialchars() を使用してください。それらはブラウザによって正しく表示され、編集から戻ってきたときにデータを「エスケープ解除」する必要はありません。

…何か間違っているのでしょうか? アプリケーションに出入りするすべての入力を検査し、ブラウザ、データベース サーバー、およびソリューションの他の部分にとって特別な意味を持つ文字が含まれている可能性があるかどうかを確認する必要があります。対話ごとに特殊文字を適切にエスケープする必要があります (つまり、MySQL データベースの場合は mysql_escape_string()、HTML の場合は htmlspecialchars() など)。

于 2008-10-24T09:19:34.603 に答える
0

ほとんどの Web ベースの言語には、HTML で解釈された文字をエスケープするためのライブラリ関数があるため、使用している言語のドキュメントを確認してください。

Darryl が言ったように、html_entities() (htmlspecialchars() のエイリアス) は PHP でトリックを行います。

于 2008-10-24T07:10:56.593 に答える