Дезинфицировать содержимое RSS-канала для агрегатора каналов

Я создаю агрегатор/читатель RSS-каналов на PHP. Поскольку RSS — это, по сути, пользовательский контент, я не хочу полагаться на то, что содержимое канала будет безопасным.

Мне нужен совет по очистке содержимого канала для хранения и отображения на устройствах пользователя. В настоящее время я использую htmlentities(feed_content) для экранирования всех символов, но это не работает правильно, поскольку UTF-8 кодирует символы, которые не могут быть декодированы обратно в Javascript (которые я использую для построения внешнего интерфейса).

- Original: "Soundtrack: Dinosaur Jr. - Don’t Pretend You Didn’t Know I hadn’t thought much..."

- After htmlentities: "Copyright-Infringing Tweets Will Now Be “Withdrawn” Instead of “Disappeared..."

- After JS decodeURI: "Copyright-Infringing Tweets Will Now Be “Withdrawn” Instead of “Disappeared..."

Если я удалю htmlentities выше, текст будет отображаться правильно. Но я не уверен, что это правильный способ обеспечить очистку данных.


person AJ.    schedule 05.11.2012    source источник


Ответы (1)


передать правильную кодировку в htmlencode:

echo htmlentities($str, ENT_QUOTES, "UTF-8");

...но обычно в этом нет необходимости. Просто убедитесь, что вы установили правильные заголовки, чтобы браузер правильно интерпретировал их как utf8:

header('Content-Type: text/html; charset=utf-8');

или если вы загружаете с помощью json:

header('Content-type: application/json; charset=utf-8');
person Niko Sams    schedule 17.04.2013