JS HTML轉義碼解碼

  • 背景:
    • JQ的html()函數得到網頁的html源碼,而有時得到的文本中的中文會以HTML轉義碼的形式出現:如“轉發”被編碼成了“& #x8F6C;& #x53D1;”。(這裏&和#之間加了空格,否則會直接顯示爲中文)
    • 而使用text()函數又會丟失網頁的元素信息,所以想原生的保留網頁信息只能進行手工解碼。
  • 原理:
    • 這種編碼方式使用的編碼爲unicode,在&#和;之間的十六進制數即爲該字符的unicode編碼。
  • 造輪子:
    • String.fromCharCode()方法,該方法接受一個unicode值,返回該值代表的字符。
    • JS字符串正則替換支持str.replace(reg, function(text){})的形式。

function decodeHtml(_str){
    var s = _str.replace(/&#x[\dA-F]{2,4};/g, function(_hex){
        return String.fromCharCode('0' + _hex.slice(2, -1));
    });
    return s;
}

原理都清楚了輪子也很簡單
nodejs測試通過

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章