【问题标题】:Code in a RSS feedRSS 提要中的代码
【发布时间】:2009-08-10 15:50:47
【问题描述】:

我正在使用提要创建器(特别是 Kohana 的 feed::create()),但我的某些文本在描述元素中可能是这样的

见下方代码

<?php echo 'example'; ?>

提要创建者正在使用 SimpleXML 库。每当返回数据时(使用$xml->asXml()),描述元素内的 html 尖括号就会被转换为 HTML 实体。

这使得标签被正确解析,对p标签等有用。但是,在这种情况下 - PHP 代码不会显示(被尖括号包围)。

我的问题是 - 如何在 RSS 提要中显示这样的内容?当> 本身被解析为< 时,如何显示它?这有意义吗?

以下是输出的示例:

<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! ?>

【问题讨论】:

    标签: php rss kohana html-entities


    【解决方案1】:

    您希望代码在提要中实际显示为代码,而不是执行,对吗?如果是这样,您需要以与希望它以 HTML 显示的方式相同的方式对其进行转义,即:

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

    这将导致您的提要看起来比现在更加乱码,因为 PHP 将被双重编码,一次用于 RSS XML,另一次用于 RSS XML 中包含的 HTML。

    【讨论】:

    • 我试过了 - 但我无法让它工作。让我再试一次。感谢您的回答。
    • 我不得不使用它两次 - 我利用了 Kohana 的 html::specialchars()。它丑得要命,但它有效——这条线看起来像这样$markup = '&lt;pre&gt;' . html::specialchars(html::specialchars($code)) . '&lt;/pre&gt;';
    【解决方案2】:

    所有 RSS 标签都包含字符串,所以您不能在设置标签之前进行 PHP 操作吗?

    所以不要说:

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

    你应该这样做:

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

    您希望将 PHP 代码传递到您的 RSS 提要中的原因是什么?我猜很多提要阅读器无论如何都不会执行它。

    【讨论】:

    • 我想显示它...如... 看看下面的代码示例。我不希望代码被解析。我猜所有的提要阅读器都不会执行 PHP 代码……如果他们确实在在线阅读器或您的本地机器上执行它,那将是一个相当大的安全问题。
    猜你喜欢
    • 2012-04-09
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 2010-09-08
    • 2014-10-04
    相关资源
    最近更新 更多