我有第三方应用创建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,并在服务器加载时将其编码为?
答案 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,并回显出服务器需要呈现的所有/任何文本。