2009-08-10 3 views
0

Я использую корма творца (в частности, Kohana-х feed::create()), за исключением некоторых из моего текста может быть как это в описании элементакод в RSS фиде

См код ниже

<?php echo 'example'; ?>

Создатель фида использует библиотеку SimpleXML. Всякий раз, когда данные возвращаются (используя $xml->asXml()), угловые скобки html внутри элемента описания преобразуются в объекты HTML.

Это позволяет правильно анализировать теги, полезно для p-меток и тому подобного. Однако в этом случае - код PHP не будет отображаться (окруженный угловыми скобками).

Мой вопрос: как я могу показать такие вещи в ленте RSS? Как я могу отобразить &gt;, когда он сам разобран как <? Имеет ли это смысл?

Вот пример того, что в настоящее время выводится:

<description>&lt;p&gt;some content&lt;/p&gt;&#13; 

&lt;p&gt;WITH some code&lt;/p&gt;&lt;p&gt;&lt;?php&#13; 
    //test me out!&#13; 
?&gt;&lt;/p&gt;&#13; 
</description> 

(примечание, что это не ошибка выше - в сущности, преобразуются)

То, что я хотел бы, чтобы отобразить (в RSS читателя) является

некоторое содержание

С каким-то кодом

<?php 
    //test me out! ?> 

ответ

2

Вы хотите, чтобы код фактически отображался в канале как код, а не выполнялся, правильно? Если да, то вам нужно, чтобы избежать его так же, как если бы вы хотели, чтобы отобразить в HTML, то есть:

htmlspecialchars("<?php echo 'example'; ?>") 

Это приведет в фид выглядит еще более искаженным, чем она уже делает, потому что PHP будет быть дважды закодированным, один раз для RSS XML и снова для HTML, содержащегося в RSS XML.

+0

Я пробовал это - но я не мог заставить его работать. Позвольте мне попробовать еще раз. Спасибо за Ваш ответ. – alex

+0

Мне пришлось использовать его дважды - я использовал html :: specialchars().Это уродливо, как черт, но он работает - строка выглядит так: $ markup = '

' . html::specialchars(html::specialchars($code)) . '
'; ' – alex

0

Все RSS метка содержит строки, так вы не можете просто сделать ваш PHP манипуляции перед установкой метки?

Таким образом, вместо того, чтобы сказать:

$xml->description = 'Description <?php echo $var; ?>'; 

вы должны делать:

$xml->description = 'Description ' . $var; 

Что является причиной того, что вы хотите передать PHP код в свой RSS канал? Я предполагаю, что многие читатели каналов не будут его исполнять.

+0

Я хочу ** показать ** это ... как в ... ** посмотреть ** в следующем примере кода. Я не хочу, чтобы код обрабатывался. Я предполагаю, что все читатели каналов не будут выполнять PHP-код ... это была бы довольно проблема безопасности, если бы они выполняли его на онлайн-ридере или на локальной машине. – alex

Смежные вопросы