Заменить закодированные знаки £ - PullRequest
1 голос
/ 02 апреля 2012

Я отображаю список продуктов в виде RSS-ленты из магазина eBay.

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

Как вы можете видеть, они кодировали 2-й знак фунта на "Купить сейчас только за £ 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, '£');

Кто-нибудь может помочь, я уверен, что это фундаментальная проблема?

Ответы [ 3 ]

3 голосов
/ 02 апреля 2012

В вашем регулярном выражении отсутствует / в начале, но также значение фактически кодируется дважды как £ (вы можете увидеть это, если посмотрите исходный код).

itemHTML.replace(/£/gi, '£');
0 голосов
/ 02 апреля 2012

Вы пробовали просто заключить его в кавычки?

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

... потому что, не правда ли, просто заменить текстовую строку?

0 голосов
/ 02 апреля 2012

В вашем регулярном выражении отсутствует начало:

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

Однако я бы просто сделал его строкой, а не регулярным, мне кажется проще:

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

Обратите внимание, что файл XML закодировал амперсанд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...