JavaScript で HTML エンティティをエンコードする簡単なソリューション
Muhammad Muzammil Hussain
2023年10月12日
-
String.prototype.toHtmlEntities()
を使用して、文字列を HTML エンティティにエンコードする -
String.fromHtmlEntities()
を使用して、HTML エンティティから文字列をエンコードする -
JavaScript で
unescapeHTML()
関数を使用して HTML エンティティをエンコードする
この記事では、JavaScript で HTML エンティティをエンコードするための最良のソリューションについて説明します。以下のサンプルコードは、任意の文字列を HTML エンティティに変換し、文字列のプロトタイプに戻します。
String.prototype.toHtmlEntities()
を使用して、文字列を HTML エンティティにエンコードする
次の JavaScript コードでは、
String.prototype.toHtmlEntities = function()
は、.replace()
メソッドを使用して HTML エンティティを含む文字列を返します。.replace()
は、指定された文字列の値を検索し、それを新しい目的の/指定された値に変更します。.prototype
は JavaScript のオブジェクトです。デフォルトでは、関数およびオブジェクトに関連付けられています。String.charCodeAt()
は、文字列内のインデックスを記述した文字の Unicode を返します。
/**
* Conversion of string to HTML entities
*/
String.prototype.toHtmlEntities = function() {
return this.replace(/./gm, function(s) {
// return "&#" + s.charCodeAt(0) + ";";
return (s.match(/[a-z0-9\s]+/i)) ? s : '&#' + s.charCodeAt(0) + ';';
});
};
String.fromHtmlEntities()
を使用して、HTML エンティティから文字列をエンコードする
次の JavaScript ステートメントでは、次のものを作成しました。
- HTML エンティティを含む
string
を受け取るString.fromHtmlEntities = function(string)
。 - この例では、
.replace()
で指定された文字列値は/&#\d+;/gm
であり、文字列 sString.fromCharCode
を返す関数
に置き換えられます。 String.fromCharCode
は、シーケンスによって生成された文字列を返すメソッドです。
/**
* Creation of string from HTML entities
*/
String.fromHtmlEntities = function(string) {
return (string + '').replace(/&#\d+;/gm, function(s) {
return String.fromCharCode(s.match(/\d+/gm)[0]);
})
};
その後、以下の機能を使用してください。
- これは、特殊文字(
†®¥¨©˙∫ø…ˆƒ∆...
)を含む文字列で初期化される変数var str
です。 - 関数
.toHtmlEntities
は、この特殊文字列var str
で呼び出されます。 console.log
は、ログボックスに値を表示する JavaScript のデフォルト関数です。
var str = "Dummy Test´†®¥¨©˙∫ø…ˆƒ∆÷∑™ƒ∆æø𣨠ƒ™en tést".toHtmlEntities();
console.log("Entities:", str);
console.log("String:", String.fromHtmlEntities(str));
コンソールからの出力は次のとおりです。
"Entities:"
"Test´†®¥¨©˙∫ø…ˆƒ∆÷∑™ƒ∆æø𣨠ƒ™en tést"
"String:"
"Dummy Test´†®¥¨©˙∫ø…ˆƒ∆÷∑™ƒ∆æø𣨠ƒ™en tést"
JavaScript で unescapeHTML()
関数を使用して HTML エンティティをエンコードする
これらの関数は、JavaScript コンパイラーでオンラインまたはオフラインで確認できます。ブラウザが HTML
を読み取らずに文字列
を表示するのに役立ちます。これは別の方法で行うことができます。HTML エンティティのオブジェクトを作成できます。
- 変数
var htmlEntities
には、特殊文字と記号のオブジェクトが含まれています。 unescapeHTML(str)
関数は、.replace()
条件を使用して文字列と戻り値を受け取ります。
var htmlEntities = {
nbsp: ' ',
cent: '¢',
pound: '£',
yen: '¥',
euro: '€',
copy: '©',
reg: '®',
lt: '<',
gt: '>',
quot: '"',
amp: '&',
apos: '\''
};
function unescapeHTML(str) {
return str.replace(/\&([^;]+);/g, function(entity, entityCode) {
var match;
if (entityCode in htmlEntities) {
return htmlEntities[entityCode];
/*eslint no-cond-assign: 0*/
} else if (match = entityCode.match(/^#x([\da-fA-F]+)$/)) {
return String.fromCharCode(parseInt(match[1], 16));
/*eslint no-cond-assign: 0*/
} else if (match = entityCode.match(/^#(\d+)$/)) {
return String.fromCharCode(~~match[1]);
} else {
return entity;
}
});
};
JavaScript にはネイティブバージョンの HTML エンティティはありません。ブラウザが HTML として解釈されないようにするための基本が必要な場合。PHP.js プロジェクトは、各 PHP のローカル容量を JavaScript に移植するタスクであり、モデルも含まれています。これらの線に沿って、私はそれを単純に保ち、その下を利用しました:
function EntitiesHtml(string) {
return String(string)
.replace(/&/g, '&')
.replace(/>/g, '>')
.replace(/</g, '<')
.replace(/"/g, '"');
}