RSS未使用CDATA中的空格进行验证

时间:2015-10-12 21:39:17

标签: xml rss

我有第三方应用创建RSS XML。 CDATA文本中有空格,这使得验证失败。

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Title</title>
<link>http://www.example.com/</link>
<description>Description</description>
<image>
    <title>Title</title>
    <url><![CDATA[http://www.example.com/some image/image.jpg]]></url>
    <link>http://www.example.com/</link>
</image>
<item>
    <title>Item title</title>
    <link>http://www.example.com/</link>
    <description>Description</description>
</item>
</channel>
</rss>

我无法控制CDATA附带的文字。但是,当我直接从浏览器访问时,我可以确认有问题的URL会将我带到图像中。我得到的错误是Invalid character in a URI,当我手动编辑服务器上的文件以删除RSS验证的空间时。

编码空间%20似乎有效。但我不确定如何继续这样做。我是否可以将XML输出更改为PHP,并在服务器加载时将其编码为?

1 个答案:

答案 0 :(得分:0)

转换为PHP并使用rawurlencode完成了这项工作,而不是使用urlencode替换空格的+

<? php echo '
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Title</title>
<link>http://www.example.com/</link>
<description>Description</description>
<image>
    <title>Title</title>
    <url><![CDATA[http://www.example.com/';?><?php echo rawurlencode('some image/image.jpg');?><?php echo ']]></url>
    <link>http://www.example.com/</link>
</image>
<item>
    <title>Item title</title>
    <link>http://www.example.com/</link>
    <description>Description</description>
</item>
</channel>
</rss>'?>

不要忘记将文件类型更改为php,并回显出服务器需要呈现的所有/任何文本。