2012-04-02 45 views
1

我正在顯示從eBay商店中讀取RSS源的產品列表。替換已編碼的£標記

http://www.ebay.co.uk/sch/custommodsuk/_i.html?rt=nc&_rss=1&_rssstore=1

正如你可以看到,他們已經在編碼的「現在購買僅售:£ 45.00」二號井號

所以,我已經着手對用戶前端糾正這種,並且我真的很努力在每個產品的HTML上進行全局替換。

ebayItemsContainer.find('.listItem').each(function() { 
       var itemHTML = $(this).html(); 
       var newHTML = itemHTML.replace(£/gi, '£'); 
       $(this).html(newHTML) 
      }); 

即使在替換時沒有分號,也不會將編碼字符替換爲實際字符。

也逃脫字符錯誤...

var newHTML = itemHTML.replace(\&\#163\;/gi, '£'); 

任何人可以幫助,我敢肯定,這是一個根本性的問題?

+0

你真的要拋棄正則表達式中的前導「/」字嗎? – Pointy 2012-04-02 19:08:37

+0

沒有忘記它的例子...已經玩了一段時間。不是真正的錯誤。 – 2012-04-02 20:07:07

回答

3

您的正則表達式在開始時缺少/,而且該值實際上是雙編碼爲£(如果查看源代碼,您可以看到這一點)。

itemHTML.replace(/£/gi, '£'); 
+0

謝謝,這樣做了,我確實有過先例/只是把它忘記了,而我卻在亂搞。這是雙重編碼,好點。非常感謝。 – 2012-04-02 19:18:54

0

你的正則表達式缺少開頭:

var newHTML = itemHTML.replace(/£/gi, '£');

但是我只想讓一個字符串,而不是一個正則表達式,似乎更容易對我說:

var newHTML = itemHTML.replace('£', '£');

注意, XML文件已編碼&符號。

+0

傳遞一個字符串作爲第一個參數,而不是一個RegExp(帶有模式修飾符)只會替換第一個參數。在這個問題中引用全球替代作爲一個要求,雖然實際上是否需要這一點在這個例子中並不清楚。 – MrWhite 2012-04-03 08:49:46

0

您是否嘗試過簡單地封閉它引號?

var newHTML = itemHTML.replace('£', '£');

...因爲,是不是真的只是一個文本字符串替換?

+1

傳遞一個字符串作爲第一個參數,而不是一個RegExp(帶有模式修飾符)只會替換第一個參數。在這個問題中引用全球替代作爲一個要求,雖然實際上是否需要這一點在這個例子中並不清楚。 – MrWhite 2012-04-03 08:48:59

+0

啊,我明白了。感謝您的解釋。 – redlena 2012-04-03 14:19:11