我有一个rss feed的问题.
当我做 <title>This is a title </title>
标题很好地出现在Feed中
但当我ddo $ title ="这是一个倾斜";
<title><![CDATA['$title']]></title>
Run Code Online (Sandbox Code Playgroud)
标题根本没有出现.
它仍然无法正常工作.我动态地生成我的RSS Feed,它看起来像这样:
$item_template="
<item>
<title>[[title]]</title>
<link>[[link]]</link>
<description><![CDATA[[[description]]]]></description>
<pubDate>[[date]]</pubDate>
</item>
";
Run Code Online (Sandbox Code Playgroud)
并在循环中:
$s.=str_replace(
array("[[title]]","[[link]]","[[description]]","[[date]]"),
array(htmlentities($row["title"]),$url,$description,$date),
$item_template);
Run Code Online (Sandbox Code Playgroud)
问题特别是当标题有欧元符号时.然后它出现在我的rss验证器中,如:
Â\x80
Run Code Online (Sandbox Code Playgroud)
更详细的信息:
好的,过去几天我一直在努力,我找不到解决办法.所以我会开始赏金.以下是更多信息:
€<title></title>如果需要更多信息,请询问.
phi*_*hag 15
问题是你的输出代码; 更改
echo '<title><![CDATA[$title]]></title>';
Run Code Online (Sandbox Code Playgroud)
至
echo '<title><![CDATA[' . $title . ']]></title>';
Run Code Online (Sandbox Code Playgroud)
作为附注,请注意以下事项:不要通过后续回答您自己的问题,而是编辑原始问题.没有充分理由不要使用正则表达式.不要猜.
相反,做你应该做的事情:把标题包起来htmlentitites并完成,如:
echo '<title>' . htmlentities($title, ENT_NOQUOTES, [encoding]) . '</title>';
Run Code Online (Sandbox Code Playgroud)
替换[encoding]为您正在使用的字符编码.最有可能的是,这是'UTF-8'.这是必要的,因为php(<6)默认使用ISO-8859-1,并且无法表示例如该编码中的欧元符号.有关详细信息,请参阅此精心编写的介绍.
我还建议你阅读有关XML的内容.从第二章开始.