HTML文字列をエスケープ
HTML文字列をエスケープするには次の方法で可能です。
関数定義
/**
* HTML文字列をエスケープ
* @param {string} convertString エスケープ元のHTML文字列
* @return {string} エスケープされたHTML文字列を返す
*/
var escapeHtml = function(convertString) {
if (typeof convertString !== 'string') return convertString;
var patterns = {
'<' : '<',
'>' : '>',
'&' : '&',
'"' : '"',
'\'' : ''',
'`' : '`'
};
return convertString.replace(/[<>&"'`]/g, function(match) {
return patterns[match];
});
};
簡単な解説
HTMLのうち<、>、&、"、'、`を文字実体参照または数値文字参照へ変換します。
HTML文字列から、対象のパターンに一致した文字を置換するような処理になっています。
使い方
var result = escapeHtml( convertString );
引数
引数名 | 型 | 説明 | |
---|---|---|---|
第一引数 必須 |
convertString | string | 変換したいHTML文字列 |
戻り値
エスケープされた文字列を返します。
サンプルコード
var htmlStr = '<div id="sample"><p class="text">foo<br><a href="https://example.co.jp/?k1=v1&k2=v2" target="_blank">bar</a></p></div>';
var result = escapeHtml(htmlStr);
alert(result); // <div id="sample"><p class="text">foo<br><a href="https://example.co.jp/?k1=v1&k2=v2" target="_blank">bar</a></p></div>