KANTENNA.COM

Solarized

HOME > WEBプログラム覚書 > HTMLエスケープを行うPHP関数、htmlspecialchars をJavascriptで実装

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

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の挙動がよくわからない・・・

トラックバック(0)

コメント

コメントする
Name
Email Address
URL
TIME LINE
2012
02.08

[Ubuntu11.10]Winows XPユーザーがUbuntuを使ってみて

Windows XPとUbuntuのデュアルブート環境にしてみておもったこと。

2012
02.03

[jQuery]closest()とparents()

今から16年前Netscapeブラウザのソースコードの公開方法の会議の中で、初めてオープンソースという言葉が使われた今日、 みなさんいかがお過ごしでしょうか。

今回の投稿はそれとは関係のないjQueryのparents()とclosest()が 似てたので何が違うのか試した時のメモです。

2012
02.01

[jQuery Mobile]初期化イベントメモ

jQuery Mobileは読み込まれてから

mobileinit -> pagebeforecreate -> pagecreate -> pageinit

の順番でイベントが発生する。

2012
02.01

[WordPress]管理画面のフッタのフィルタとアクション。

時間も時間なので、あまり使用頻度の高くない微妙なネタを。

会員制サイトなどで不特定多数の人にログインさせる場合、フッタのバージョン情報は隠しておきたかったり、 こじゃれたメッセージを表示したいときとか使うアクションとフィルタ。

2012
01.28

[WordPress] ブログの情報を取得する方法とノーキャッシュ疑惑

ブログのget_bloginfo()で取れないデータが必要な場合に使うもの。

2012
01.26

[jQuery Mobile]ダイアログ

jQuery Mobileにおけるダイアログの扱いはウインドウではなくページ。 なので通常のページと同様に扱える。ダイアログウインドウを出す。じゃなくダイアログページに遷移する。的な。

2012
01.25

[Ubuntu11.10]Ubuntuのインストール後の設定

インストール完了後の環境構築。PC起動時いちいちBIOSからブートドライブ選んで ブートするのかと思ってたら起動時にOS選択画面が出てくる。

すばらしいですね。

2012
01.24
2012
01.23

MinGW+Mintty+Git

MinGW+Mintty+Gitをやろうとして失敗に終わった。このエントリーには収穫できるものはありません。