読者です 読者をやめる 読者になる 読者になる

素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

HTMLをエスケープするメソッド

ruby

Rubyist Magazine - あなたの Ruby コードを添削します 【第 1 回】 pukipa.rbを見て、正規表現とハッシュのキーの両方に同じものを書いている点が気になった。

module HTMLUtils
  ESC = {
    '&' => '&',
    '"' => '"',
    '<' => '&lt;',
    '>' => '&gt;'
  }

  def escape(str)
    str.gsub(/[#{ ESC.keys.join }]/on, &ESC.method(:[]))
  end

   def urlencode(str)
     str.gsub(/[^\w\.\-]/n) {|ch| sprintf('%%%02X', ch[0]) }
   end
end

extend HTMLUtils
puts escape('foo"<>&') # foo&quot;&lt;&gt;&amp;

正規表現のoオプションを使うと、埋め込みを何度も行わなくなる。その代わり、埋め込むものが動的な場合は使えない。