HTMLで要素の属性値内にクォート文字を書くには
htmlでの要素の属性は「属性名='属性値'」または、「属性名="属性値"」で記述します。
では、属性値の中に「'」または「"」が存在する場合は、どうしたらよいでしょうか?
UNIX系人は「\」付加したり、SQL系の人は「''」とか2つ重ねたりしますね。でも、今回はNGです。
答えは、文字参照*1を使います。
実は、以下も文字実体参照使ったほうがいいようです。
- 「&」は、「&」
- 「>」は、「>」
- 「<」は、「<」
以下は、PerlでのCGIで「&」「>」「<」「"」「'」を文字参照に変換する関数です。お役に立てれば幸いです。
sub htmlf { my ($strhtml) = @_; $strhtml =~ s/&/&/g; $strhtml =~ s/>/>/g; $strhtml =~ s/</</g; $strhtml =~ s/"/"/g; $strhtml =~ s/'/'/g; return $strhtml; }
このサンプルの関数は、以下を対処します。
たとえば、DBからSELECTしたデータ中にクォート文字とか山括弧文字などある場合、そのデータをHTML出力すると、いろいろと悪さをします。HTML上で悪さをしないように文字参照に変換します。