Здравствуйте господа!
Хочу поделиться с сообществом своей проблемой и, на мой взляд, ее решением, в работе со сборщиком новостей.
Агрегатор, при импорте новостей, зачастую выводит и спецсимволы:
&, ", ', <, > '
Вопрос. Как от этого избавиться?
Я не нашел лучшего способа, чем сделать небольшой хак к модулю aggregator:
1. В самый конец файла aggregator.module вставляем следующую функцию:
<?php
function xmlentities($value) {
return str_replace ( array ( '&' , '"', ''' , '<' , '>', ''' ), array ( '&', '"', "'", '<', '>', '�' ), $value );
}
?>
2. В файле aggregator.pages.inc вставляем дополнительные строки:
после каждого названия "title"
<?php
$variables['feed_title'] = check_plain($item->title);
?>
вставляем стороку
<?php
$variables['feed_title'] = xmlentities($item->title);
?>
после каждого описания "description"
<?php
$variables['content'] = review_filter_xss($item->description);
?>
вставляем стороку
<?php
$variables['content'] = xmlentities($item->description);
?>
Все! Радуйтесь красивому отображению Ваших новостей.
Указанную операцию можно совершить в обратном направлении, нужно только поменять местами array() в приведенной функции.
Демо: http://job.org.ua/kino
Комментарии
Подскажите пожалуйста где лежит файл aggregator.pages.inc?
В папке Modules я вижу только: aggregator.css, aggregator.info, aggregator.module и aggregator.install.install
Ну, хоть автор на вопрос не ответил, я создал
aggregator.pages.inc
в папке includes
и всё получилось.
Кстати, да. Насколкьо я помню, стандарт RSS2.0 требует мнемонизации спецсимволов. Я вроде столкнулся с этим косячком в друпале, но тогда не обратил внимания. Удивился, что в php (по крайне мере версии 4) нету функции, обратной htmlspecialchars или htmlentities,
Вроде всё получилось, вот только
не удалось победить.