Master-X
Форум | Новости | Статьи
Главная » Форум » Блоги и Социальные сети » 
Тема: Правильный вывод произвольной rss-ленты?
цитата
31/08/10 в 23:43
 log
В общем есть код:

Код:

<?php if (have_posts()) : while (have_posts()) : the_post(); update_post_caches($posts); ?>
<?xml version="1.0" encoding="UTF-8"
<rss version="2.0"
<channel>

<item>
<title><?php the_title_attribute(); ?></title>
<link><?php the_permalink(); ?></link>
<description><?php the_excerpt(); ?></description>
<category><?php
$category = get_the_category();
echo $category[0]->cat_name;
?></category>
<descriptionfull>
<?php global $more; $more = 1; the_content(); ?>
</descriptionfull>
</item>

<?php endwhile; ?>
</channel>
</rss>


Сразу говорю, что лента специфическая тот же тег <descriptionfull>. Но не в этом суть а в том, что мне нужно во всех тегах (title, link, description, category и descriptionfull) заменить встречающиеся в тексте символы < > & ' " на соответствующие элементы:
& на &amp;
< на &lt;
> на &gt;
' на &apos;
" на &quot;

Вопрос, как это сделать?
цитата
31/08/10 в 23:52
 kodek
$text = str_replace("\"", "&quot;", $text);

Ну и т.п.
Только для & нужно проверку написать, чтобы в конструкции &amp; она не меняла символ.

PS Почему не будет? По причине?
У меня отлично работает такое.

Последний раз редактировалось: kodek (31/08/10 в 23:54), всего редактировалось 2 раз(а)
цитата
31/08/10 в 23:53
 log
нет так работать не будет, проверенно!
цитата
31/08/10 в 23:54
 log
Это ж ВП, там либо фильтр писать надо либо хрен его знает как, уже намучился с кодом, а бестолку...
цитата
01/09/10 в 00:03
 kodek
Действительно, с WP я дела не имел. Сейчас посмотрел код ещё раз. Таки да. Функции типа этой the_content() сами организуют вывод получается. Тогда получается - их модифицировать, чтобы они отдавали просто результат, в виде строки, которую можно обработать. Либо этот же обработчик встраивать им внутрь.

PS А просто пройтись по базе SQL запросом и всё поменять - не вариант?
цитата
01/09/10 в 00:07
 log
kodek писал:
PS А просто пройтись по базе SQL запросом и всё поменять - не вариант?


Нет, конечно. Мне базу портить ни к чему, мне нужно рссленту сделать специфическую.
цитата
01/09/10 в 00:18
 log
Получается, что нужно сделать фильтр, типа этого:

Код:

function new_content_replace($content) {
htmlspecialchars(StripSlashes($content));
}
add_filter('the_content', 'new_content_replace');

?>


только значения $content и the_content неправильные, т.к. из-за них the_content(); вообще не отображается...
Я уже не говорю, про функции тайтл, линк и т.д.
цитата
01/09/10 в 00:22
 kodek
А если сделать банально - взять вывод этой ленты (там же выводится чего-то?!), которую стандартный скрипт выдаёт. И её уже, целиком, обработать своей функцией? Ну и подать на выход снова. RSS ридерам, разумеется, подсовывать уже вторую ленту, обработанную.
цитата
01/09/10 в 01:14
 log
Так тоже пробовал, но не получилось icon_sad.gif
Код просто не выполняется, да и вообще, хотелось бы почеловечески реализовать, а не абы как...
цитата
01/09/10 в 13:06
 log
Уже не актуально!


Эта страница в полной версии