を使用してHTML文字エンティティを通常のテキストに変換してください。javacript
例:我々は、我々はJavaScriptのみ
更新を使用して>
を必要とし、>
持っている:jqueryのは、簡単な方法であると思われます。しかし、軽量なソリューションがあればうれしいでしょう。これだけでこれを行うことができる関数のようなもの。
を使用してHTML文字エンティティを通常のテキストに変換してください。javacript
例:我々は、我々はJavaScriptのみ
更新を使用して>
を必要とし、>
持っている:jqueryのは、簡単な方法であると思われます。しかし、軽量なソリューションがあればうれしいでしょう。これだけでこれを行うことができる関数のようなもの。
あなたはこのような何かを行うことができます:
String.prototype.decodeHTML = function() {
var map = {"gt":">" /* , … */};
return this.replace(/&(#(?:x[0-9a-f]+|\d+)|[a-z]+);?/gi, function($0, $1) {
if ($1[0] === "#") {
return String.fromCharCode($1[1].toLowerCase() === "x" ? parseInt($1.substr(2), 16) : parseInt($1.substr(1), 10));
} else {
return map.hasOwnProperty($1) ? map[$1] : $0;
}
});
};
function decodeEntities(s){
var str, temp= document.createElement('p');
temp.innerHTML= s;
str= temp.textContent || temp.innerText;
temp=null;
return str;
}
alert(decodeEntities('<'))
/* returned value: (String)
<
*/
これは、信頼できない(ユーザーが入力した)テキストでは安全ではありません。このコメントを見るhttp://stackoverflow.com/questions/1147359/how-to-decode-html-entities-using-jquery#comment6018122_2419664 – nickf
私は図書館がそこにある知っているが、ここでは、ブラウザのためのソリューションのカップルです。これらは、HTMLエンティティのデータ文字列を、テキストエリアや入力[type = text]など、文字を表示する人間が編集可能な領域に配置するときに有効です。
私は古いバージョンのIEをサポートしなければならないので、この回答を追加します。私は数日間の研究とテストを終わらせると感じています。私は誰かがこれが有用であることを願っています。
これはjQueryを使用している最新のブラウザです.10(7,8,9)より前のバージョンのIEをサポートする必要がある場合は、これを使用しないでください。 1つの長いテキスト行。
if (!String.prototype.HTMLDecode) {
String.prototype.HTMLDecode = function() {
var str = this.toString(),
$decoderEl = $('<textarea />');
str = $decoderEl.html(str)
.text()
.replace(/<br((\/)|(\/))?>/gi, "\r\n");
$decoderEl.remove();
return str;
};
}
これは、上記のkennebecの作業に基づいていますが、これは主に古いIEバージョンのためのものです。これはjQueryを必要としませんが、依然としてブラウザが必要です。
if (!String.prototype.HTMLDecode) {
String.prototype.HTMLDecode = function() {
var str = this.toString(),
//Create an element for decoding
decoderEl = document.createElement('p');
//Bail if empty, otherwise IE7 will return undefined when
//OR-ing the 2 empty strings from innerText and textContent
if (str.length == 0) {
return str;
}
//convert newlines to <br's> to save them
str = str.replace(/((\r\n)|(\r)|(\n))/gi, " <br/>");
decoderEl.innerHTML = str;
/*
We use innerText first as IE strips newlines out with textContent.
There is said to be a performance hit for this, but sometimes
correctness of data (keeping newlines) must take precedence.
*/
str = decoderEl.innerText || decoderEl.textContent;
//clean up the decoding element
decoderEl = null;
//replace back in the newlines
return str.replace(/<br((\/)|(\/))?>/gi, "\r\n");
};
}
/*
Usage:
var str = ">";
return str.HTMLDecode();
returned value:
(String) >
*/
ここでは、HTMLドキュメント全体をデコードする「クラス」があります。私はあなたがあるSimpy /&[^;]+;/g
を使用することができますエンティティを引くためではなく、完全に有効なHTML文書(またはXHTML)のためガンボの正規表現を使用
HTMLDecoder = {
tempElement: document.createElement('span'),
decode: function(html) {
var _self = this;
html.replace(/&(#(?:x[0-9a-f]+|\d+)|[a-z]+);/gi,
function(str) {
_self.tempElement.innerHTML= str;
str = _self.tempElement.textContent || _self.tempElement.innerText;
return str;
}
);
}
}
注意。
これが必要な場合は、間違った方法で問題に近づいている可能性があります。 – AndreKR
これをしない理由は何ですか? – nuaavee
これは、表示にHTMLフレンドリである必要があるが、テキストファイルに保存してユーザーがダウンロードできるデータがある場合に必要です。そのような場合は、実際には文字エンティティであることをユーザーが気付かず、どちらの文字エンティティであるか気にする必要がないため、本当に必要です。 – ArtlyticalMedia