我的rss Feed有问题。
当我做<title>This is a title </title>
标题很好地出现在Feed中
但是当我ddo $ title =“这是一个倾斜”;
<title><![CDATA['$title']]></title>
标题根本没有出现。
它仍然不起作用。我动态地生成了我的RSS Feed,它看起来像这样:
$item_template="
<item>
<title>[[title]]</title>
<link>[[link]]</link>
<description><![CDATA[[[description]]]]></description>
<pubDate>[[date]]</pubDate>
</item>
";
并循环:
$s.=str_replace(
array("[[title]]","[[link]]","[[description]]","[[date]]"),
array(htmlentities($row["title"]),$url,$description,$date),
$item_template);
问题特别是当标题有欧元符号时。然后它出现在我的rss验证器中,如:
Â\x80
更详细的信息:
好的,过去几天我一直在努力解决这个问题,但我找不到解决办法。所以我会开始赏金。以下是更多信息:
€
<title></title>
如果需要更多信息,请询问。
答案 0 :(得分:15)
问题是输出代码;变化
echo '<title><![CDATA[$title]]></title>';
到
echo '<title><![CDATA[' . $title . ']]></title>';
作为旁注,请注意以下事项:不要通过跟进回答您自己的问题,而是编辑原始问题。没有充分理由不要使用正则表达式。不要猜。
相反,做你应该做的事情:在htmlentitites
中包裹标题并完成,如:
echo '<title>' . htmlentities($title, ENT_NOQUOTES, [encoding]) . '</title>';
将[encoding]
替换为您正在使用的字符编码。最有可能的是,这是'UTF-8'。这是必要的,因为php(&lt; 6)默认使用ISO-8859-1并且没有办法表达,例如欧元签到该编码。有关详细信息,请参阅此well-written introduction。
我也建议你read about XML。从第二章开始。
答案 1 :(得分:3)
使用htmlspecialchars()
代替htmlentities()
。
RSS / ATOM Feed 不是 HTML,因此您无法在其中使用HTML实体。 XML has only five entities defined by default,因此您无法使用€
。由于您使用的是UTF - 使用文字欧元符号,无需转换(无htmlentities
),但可以转义其他敏感字符(htmlspecialchars
)。
这将是完全有效的RSS / XML。如果这不能解决问题,那就意味着它位于其他地方(请为我提供生成RSS的原始资源以获得更多帮助)。
答案 2 :(得分:1)
您使用哪种编程语言或环境?例如,在PHP中,单引号会阻止评估内部的变量。
否则,在这种情况下,您实际上并不需要这些引号。可能是你对PHP的数组语法感到困惑。
所以你最好写一下:
<title><![CDATA[$title]]></title>
答案 3 :(得分:0)
我不明白你为什么要使用编码功能。当第三方获取您的内容时,将不知道如何解码该字符串。我觉得 - 您应该将CDATA用于可能破坏XML的标签 - 使用定义良好的库来编写XML。对于PHP:DomDocument或XML Writer(http://php.net/manual/en/book.xmlwriter.php)
答案 4 :(得分:-1)
我相信RSS个人资料不允许:this文件说明title
成立,字符数据进一步定义as follows。
答案 5 :(得分:-1)
This article可能有助于获取有关各种情况下欧元符号和支持的信息。该文章中的一些建议包括使用€
或€
或仅使用“欧元”一词替换标志。祝你好运!