2009-08-10 54 views
0

我使用的是飼料的創造者(特別是Kohana中的feed::create()),除了一些我的文字可能會是這樣的代碼在一個RSS源

見下面的代碼

<?php echo 'example'; ?>

描述元素

Feed創建者正在使用SimpleXML庫。無論何時返回數據(使用$xml->asXml()),description元素中的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,另一次用於RSS XML中包含的HTML。

+0

我嘗試過 - 但我無法讓它工作。讓我再試一次。感謝您的回答。 – alex 2009-08-11 01:46:23

+0

我不得不使用它兩次 - 我利用Kohana的html :: specialchars()。它醜陋地獄,但它的作品 - 行看起來像這樣'$標記='

' . html::specialchars(html::specialchars($code)) . '
';' – alex 2009-08-11 13:36:31

0

所有的RSS標籤包含字符串,這樣你就不能做你的PHP操作之前設置標籤?

所以不是說:

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

,你應該做的:

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

什麼是你想傳遞的PHP代碼到你的RSS提要的原因是什麼?我猜測很多Feed閱讀器無法執行它。

+0

我想**在下面的代碼示例中顯示**它......在...... **看**。我不希望代碼被解析。我猜所有提要閱讀器都不會執行PHP代碼......如果他們確實在在線閱讀器或本地機器上執行它,這將是一個相當嚴重的安全問題。 – alex 2009-08-11 00:14:40