エスケープ
xmlつうかrssで取得した中身に入ってる をどうやったら戻せるのか?そもそも>を'>'に変換することをなんていうのか分らないので検索さえできない.
グーグル先生を問い詰めて,実体参照とかエスケープとかいうキーワードを聞き出すものの,常識的過ぎて誰も書かないのか,それとも>を戻したりしないのか,探し方が悪いのかなかなか見つからない.
ようやく2007-02-13 - nazonoDiaryにたどり着く.これですよこれ.
utf8は使わないのでsjis用に改造してみた:
require "cgi" require "kconv" class CGI # HTMLエンティティーの定義 HtmlEntityList = Hash[ *%w(nbsp 160 iexcl 161 cent 162 pound 163 curren 164 (略) rsaquo 8250 euro 8364) ] HtmlEntity = HtmlEntityList.inject({}){|r,v| a = [v[1].to_i].pack("U") case $KCODE when 'SJIS'; a = a.kconv( Kconv::SJIS, Kconv::UTF8) end r[v[0]] = a if a!="" or v[0]=='nbsp' r } # CGI.unescapeHtml の修正版 def self.unescapeHTML( string ) string.gsub(/&([^&;]{2,8});/n) {|ma| HtmlEntity[$1] or ma } end end def unescape str; CGI.unescapeHTML str; end
リストにないエスケープ文字列の扱いがオリジナルと違ってます.
最初にブラウザ上で書いてコミットしたらメンテ中ってなって文章が消えた.対した量じゃないけど.ちゃんとエディタに書いてからコピペすればよかった.