HTMLエスケープを行うPHP関数、htmlspecialchars をJavascriptで実装

| 2007年11月13日 11:14

Javascript で HTMLエスケープを行うPHP関数、htmlspecialchars を実装で紹介されているjavascriptを試してみた。

htmlspecialcharsは下記のような変換をおこなってくれる。

  • '&' (アンパサンド) は '&' になります。
  • ENT_NOQUOTESが設定されていない場合、'"' (ダブルクォート) は '"'になります。
  • ENT_NOQUOTESが設定されている場合のみ、''' (シングルクオート) は '''になります。
  • '<' (小なり) は '&lt;' になります。
  • '>' (大なり) は '&gt;' になります。

javascriptサンプル


<script language="javascript" type="text/javascript">
function Esc(){
 var ch = document.getElementById("htmlspecialchars").innerHTML;
 var eschtml = htmlspecialchars(ch);
 document.getElementById("echo").innerHTML = eschtml;
 alert(eschtml);
}
function htmlspecialchars(ch) { 
 ch = ch.replace(/&/g,"&amp;") ;
 ch = ch.replace(/"/g,"&quot;") ;
 ch = ch.replace(/'/g,"&#039;") ;
 ch = ch.replace(/</g,"&lt;") ;
 ch = ch.replace(/>/g,"&gt;") ;
 return ch ;
}
</script>

htmlサンプル


<div id="htmlspecialchars">
<h4 id="&hsc&">htmlspecialchars</h4>
<p class='test'>ここをエスケープします。</p>
</div>
<p><a href="javascript:;" onclick="Esc()">エスケープ</a></p>
<div id="echo">
</div>

実効結果

htmlspecialchars

ここをエスケープします。

エスケープ

IE7だとシングルクォートとダブルクォートが表示されないが で見るとしっかり変換されているようだ。でも書き出すとなんか変な気がする。なんで&だけ&amp;で出るのだろう・・・相変わらずjavascriptの挙動がよくわからない・・・

HTMLエスケープを行うPHP関数、htmlspecialchars をJavascriptで実装タグ:

トラックバック
  • http://www.kantenna.com/cgi-bin/mt/mt-tb.cgi/188
コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)





この情報を登録しますか?

このサイトは次のライセンスで保護されています。

Creative Commons License

IT業界、エンジニア関連の求人
Web業界に精通したエージェントなので、希望に合った仕事、プロジェクト、雇用形態を紹介してくれてしっかりと転職活動をサポートしてくれます。
初心者のみ採用!【スノーグラス】WEB系エンジニア募集
初心者のみのweb系エンジニア求人!なんでだ?そろそろ転職考えてるのでここ行ってみようかな・・・
Twitter Updates