燈明日記 このページをアンテナに追加 RSSフィード

ごあいさつ

燈明日記へようこそ!!

燈明日記の主なテーマは、以下の通りです。

そして、燈明日記へ来られたのも『私』と『あなた』の何かのご縁です。なので、どうぞごゆっくりご覧下さい!


2008/3/29(土)

[][] HTMLで要素の属性値内にクォート文字を書くには

htmlでの要素の属性は「属性名='属性値'」または、「属性名="属性値"」で記述します。

では、属性値の中に「'」または「"」が存在する場合は、どうしたらよいでしょうか?


UNIX系人は「\」付加したり、SQL系の人は「''」とか2つ重ねたりしますね。でも、今回はNGです。

答えは、文字参照*1を使います。

  • 「"」は、「"」(文字実体参照)
  • 「'」は、「'」(数値文字参照)

実は、以下も文字実体参照使ったほうがいいようです。

  • 「&」は、「&」
  • 「>」は、「>」
  • 「<」は、「&lt;」

以下は、PerlでのCGIで「&」「>」「<」「"」「'」を文字参照に変換する関数です。お役に立てれば幸いです。

sub htmlf {
    my ($strhtml) = @_;
    $strhtml =~ s/&/&amp;/g;
    $strhtml =~ s/>/&gt;/g;
    $strhtml =~ s/</&lt;/g;
    $strhtml =~ s/"/&quot;/g;
    $strhtml =~ s/'/&#39;/g;
    return $strhtml;
}

このサンプルの関数は、以下を対処します。

たとえば、DBからSELECTしたデータ中にクォート文字とか山括弧文字などある場合、そのデータをHTML出力すると、いろいろと悪さをします。HTML上で悪さをしないように文字参照に変換します。

*1:表記方法により数値文字参照 (Numeric character reference) と文字実体参照 (Character entity reference)の二種が存在する。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

Connection: close