2013-03-29 65 views
0

我有大量的編碼文本的,就像這樣:解碼HTML實體正則表達式

<div id="readingPaneContentContainer" class="ClearBoth" cmp="cmp" ulr="ulr"><a id="rpFocusElt" href="javascript:void(0)&#59;" style="height:1px&#59;width:1px&#59 

我想取消編碼所有,所以有(例):

<div id="readingPaneContentContainer" class="ClearBoth"..... 

正則表達式可以處理嗎?

任何幫助,將不勝感激。

盧卡

+1

你使用哪種語言? –

+0

jQuery,但我認爲這不會改變任何東西..正確嗎? – Luca

+1

正則表達式實現在不同的語言中是不同的。同樣,它也會影響unicode中的實體。 –

回答

1

看到這個線程 - 它擁有你的jQuery的解決方案,它完美的作品:

How to decode HTML entities using jQuery?

var encoded = '&#60;div id&#61;&#34;readingPaneContentContainer&#34; class&#61;&#34;ClearBoth&#34; cmp&#61;&#34;cmp&#34; ulr&#61;&#34;ulr&#34;&#62;&#60;a id&#61;&#34;rpFocusElt&#34; href&#61;&#34;javascript&#58;void&#40;0&#41;&#59;&#34; style&#61;&#34;height&#58;1px&#59;width&#58;1px&#59'; 

var decoded = $("<div/>").html(encoded).text(); 

不使用正則表達式。

+0

工作正常,但要保持標記必須移除.text()謝謝 – Luca

+0

與真正的正則表達式相比,這非常慢 – Viesturs

0

東西線沿線的:

var regex = /&#(\d{2});/g; 
var match; 
while(match = regex.exec(myString)) { 
    match = match[1]; 
    myString = myString.substring(0, regex.lastIndex - 5) + convert[match] + myString.substring(regex.lastIndex); 
} 

可能工作,但必須有更好的解決方案(考慮轉換爲一個對象,使轉換,例如,80:「<」)。

說明:具有'全局'標誌的regex.exec允許在正則表達式中循環,regex.lastPoint的值是指向字符串其餘部分(尚未測試)的指針。

編輯:
工作。

+0

對不起,腳本不會運行這個代碼.. – Luca

+0

對不起,正則表達式中的括號錯誤,我改變了它,也許再試一次(我會自己運行一些測試)。 – Loamhoof

+0

現在我得到以下錯誤:轉換未定義感謝您的幫助;) – Luca