人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

RubyのCGI.escapeHTMLを使うと数値文字参照と文字実体参照の&もエンコードされてしまうのですが、これらをエンコードしない他のライブラリはありませんか?
http://d.hatena.ne.jp/afternoontea/20080709


●質問者: afternoontea
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:CGI Ruby エンコード ライブラリ 実体参照
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ●
●100ポイント ベストアンサー

escapeHTMLはcgi.rbの中を見ていただければ分かりますが、gsubで変換しているだけです。

正規表現の否定先読みを使い、除外したいものを指定すれば良いはずです。

def escapeHTML(string)
 string.gsub(/&(?!(?:amp|quot|lt|gt|#(?:\d+|x[0-9a-f]+));)/n, '&amp;').gsub(/\"/n, '&quot;').gsub(/>/n, '&gt;').gsub(/</n, '&lt;')
end

ちょっと正確か自信がないのですが、イメージは伝わると思い、回答いたしました。

参考にしてみてください。

◎質問者からの返答

ありがとうございます。少しずつ確認してみます。

#(?:\d+|x[0-9a-f]+)

・# に続く 後方参照を伴わないグループ化(10進数値文字参照形式 または 16進数値文字参照形式)

・16進数値文字参照形式は 小文字(x) または 大文字(X) を考慮する必要があるので要修正

HTML 4.01仕様

http://www.w3.org/TR/1999/REC-html401-19991224/charset.html#h-5....

http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/charset.html#h...

組み込み変数 $KCODE - "NONE" のときはマルチバイト文字列を認識しません

http://www.ruby-lang.org/ja/man/html/_C1C8A4DFB9FEA4DFCAD1BFF4.h...

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ