私は現在の問題は、ascii文字列とデータベースとの文字列を受信しています。文字列を以下の出力に変更するためのconverstion関数を作成する方法を知りたいと思います。どのように文字列を'で変換する標準チャーターに変換
var string = 'Mc'Dought';
Mc'doughtの最終結果をWebページに出力します。
function convert(str){
//Code Here
}
私は現在の問題は、ascii文字列とデータベースとの文字列を受信しています。文字列を以下の出力に変更するためのconverstion関数を作成する方法を知りたいと思います。どのように文字列を'で変換する標準チャーターに変換
var string = 'Mc'Dought';
Mc'doughtの最終結果をWebページに出力します。
function convert(str){
//Code Here
}
String#replace
に正規表現と置換機能を使用します。あなたは正規表現を使用して、各HTMLエンティティから文字コードを解析して、その文字の形に各コードをオンにするString.fromCharCode
を呼び出すことができます。
var string = 'Mc'Dought'
function convert (string) {
return string.replace(/&#(?:x([\da-f]+)|(\d+));/ig, function (_, hex, dec) {
return String.fromCharCode(dec || +('0x' + hex))
})
}
console.log(convert(string))
は、あなたが求めるものを注意してください。
シングルクォートのエスケープシーケンスがあります。それをページに投げれば、正しく表示されます。
一方、実際の一重引用符文字に変換しようとすると、問題が発生する可能性があります。
の結果を確認するには、このコードスニペットをチェックアウト:あなたが例えば(このすべてを理解し、まだそれをエスケープ解除したい場合は、あなたが設定した文字列を使用する必要が
<INPUT Value="Mc'Dought">
<BR>
<INPUT Value="Mc'Dought">
<BR>
<SPAN>Mc'Dought</SPAN>
<BR>
<SPAN>Mc'Dought</SPAN>
<BR>
<INPUT Value='Mc'Dought'> <!-- Problems!! -->
<BR>
<SPAN>Mc'Dought</SPAN>
をtitle
またはalert
を発行してください)、私は&#039を置き換えるのではなく、受け入れられたHTML-unescapeメソッドを使用することをお勧めします。 this answerを参照してください。
のjQuery:
function escapeHtml(unsafe) {
return $('<div />').text(unsafe).html()
}
function unescapeHtml(safe) {
return $('<div />').html(safe).text();
}
平野Javascriptを:
function unescapeHtml(safe) {
return safe.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, "'");
}
プレーンスクリプトのバージョンは、必要以上に複雑です。正規表現でHTMLを解析することは[*推奨しない*](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454)です。 – RobG
正規表現は何をパースしていることは、正規でない場合、解析するために特に良いものではありません。この場合、非常に頻繁にそうではない可能性があります(たとえば、HTMLの解析)。 – RobG
OPの入力文字列を指定すると、タグ、インラインスタイル、スクリプトなどの追加を開始したときにHTMLの解析がはるかに微妙であることを理解していますが、このメソッドは十分に見えました。おそらくこの答えを削除することになります。 – gyre