質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

4回答

4787閲覧

どうしてHTMLを出力ときに&をエスケープしなければいけないのでしょうか?

退会済みユーザー

退会済みユーザー

総合スコア0

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1グッド

0クリップ

投稿2016/03/24 05:17

どうしてHTMLを出力ときに&をエスケープしなければいけないのでしょうか?
「<」、「>」、「&」、「"」、「'」などの文字をhtmlを出力する際にはエスケープすべきという記事を見ました。
「<」、「>」、「"」、「'」はhtmlを壊す恐れがあるのはわかりますが「&」はhtmlをどうやって壊すことができるのでしょうか?

http://d.hatena.ne.jp/ockeghem/20070510/1178813849

kumatake👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

ではエスケープすることが理解できているという

「<」、「>」、「"」、「'」

が、エスケープした後どう表記するかを考えてみましょう。

投稿2016/03/24 05:18

kaz.Suenaga

総合スコア2037

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaz.Suenaga

2016/03/24 05:21

また、エスケープの必要性は「壊す恐れがある」という事ではなく、HTMLの仕様上それぞれの文字が特別な意味を持つようにできていることによるものです。 「 < 」が「タグの開始」という意味がある時に、「 < 」という「文字」を示すためにエスケープは行われます。
退会済みユーザー

退会済みユーザー

2016/03/24 05:22

エスケープするのに&を使用するのはわかりますが、&だけではエスケープは壊せないと思うんですが...
kaz.Suenaga

2016/03/24 05:32

「エスケープ」というから誤解するのかもしれませんね。 < を &gt; などと表記するのはエスケープではなく、文字参照というHTMLの仕様を利用した表記です。 上のコメントで言った通り、一部の文字には仕様で特別な意味をもたされているため、それらの文字を利用したい場合は文字参照を利用して表記します。 「&から;」に[文字参照」という仕様上の意味があるため、 & という「文字」を意味したい場合は & を文字参照する必要があります。
退会済みユーザー

退会済みユーザー

2016/03/24 05:44

HTMLの仕様を利用したものなのですね。 よくわかりました。 ありがとうございます。
guest

0

エスケープシーケンスをエスケープするのは HTML に限らずあらゆる言語で一般的です。\\とか。
& そのものは & と解釈すればいいと思っていますか?
では & のあとに、偶然にも gt; という3文字が続いてしまった場合でも & を & として解釈して大丈夫でしょうか。

投稿2016/03/24 05:39

tozjp

総合スコア790

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

&amp; という文字列を表したい時に &amp; と書いたら & と表示されます。
&amp;amp; のようにエスケープしないと期待通りに動作しません。

投稿2016/03/24 05:27

chitoku

総合スコア1610

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

スペースであったり特殊文字は「&」で始まり「;」で表現できるため、
&をエスケープする事でhtmlが破壊される事を防ぐ事ができるからでは?

特殊文字の例
http://www.benricho.org/symbol/tokusyu_07_mark.html

投稿2016/03/24 05:29

Feynman

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問