JavaScript で HTML の実体参照を展開する
本日は皆さんにお知恵を拝借したく、記事を書いています(^^;
codeなにがしにも投稿したのですが、 HTML の実体参照を展開する以下のような関数を作ってみました。
function htmlUnescape(html) { html = html.replace(/</g, '&lt;').replace(/>/g, '&gt;'); html = html.replace(/\"/g, '&quot;').replace(/\'/g, '&#39;'); var div = document.createElement('div'); div.innerHTML = '<pre>' + html + '</pre>'; return div.textContent !== undefined ? div.textContent : div.innerText; }
HTML の実体参照はとてもたくさんあるので、それらをまともに処理するのはちょっと厄介です。そこで、ダミーの DIV 要素を作ってそこに HTML を流し込んで展開させよう、というのが基本的な趣旨です。
これならブラウザがきちんと変換できる実体参照には確実に対応できますし、大きな変換テーブルを持つ必要もありません。ただ、イレギュラーな使い方なので、問題が出ないかどうか確信が持てません。
ということで、「これだとこういう場合にまずいよ」「別のもっといい方法があるよ」というのをご存知の方がおられましたら、教えていただけると嬉しいです。
細かいことでもいいので、お気づきの点があれば、ぜひコメントしてください!
補足: ちょっとわかりづらいようなので、補足します。 やりたいのは、以下のように実体参照を通常の文字に変換することです。
'&copy; WebOS Goodies' -> '© WebOS Goodies'
HTML をエスケープするのではなく、それを解除する変換です。 URL のエスケープを解除する関数は標準で用意されているのに、 HTML はエスケープ・解除ともに自前でやらないといけないんですよね。 できれば標準の関数としてほしいところです。
Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
詳しくはこちらの記事をどうぞ!
Categories
一歩進んだ Web アプリケーション活用術
Opera & Firefox をディープに使いこなす
WebOS 時代のプログラミング・ノウハウ
Gentoo Linux と VMware による個人サーバー構築記
オープンソース・アプリケーションで快適 Web ライフ
その他の記事
Recent Articles
この記事にコメントする