我在使用RSS显示的数据上使用htmlentities,并且我使用unicode字符,因此它们显示的实体类似Á
,而像http://feedvalidator.org/这样的服务显示为无效。如何将html entites添加到RSS feeds
我怎样才能添加这个实体的XML(如使用的命名空间),或者我应该使用不同的函数来转义字符像& < >
?
我在使用RSS显示的数据上使用htmlentities,并且我使用unicode字符,因此它们显示的实体类似Á
,而像http://feedvalidator.org/这样的服务显示为无效。如何将html entites添加到RSS feeds
我怎样才能添加这个实体的XML(如使用的命名空间),或者我应该使用不同的函数来转义字符像& < >
?
这里是在PHP 5.3.3
function encode($string) {
$result = '';
foreach (str_split(utf8_decode(htmlspecialchars($string))) as $char) {
$num = ord($char);
if ($num > 127) {
$result .= '&#' . $num . ';';
} else {
$result .= $char;
}
}
return $result;
}
使用htmlspecialchars
逃脱与XML特殊含义的字符。
使用正确的字符编码为其他字符。
(浏览htmlentities
的文档建议您可以通过ENT_XML1
并获得XML兼容的数字实体,如果您不打算使用正确的字符编码)。
由于工作的功能,但我有PHP 5.3.3和ENT_XML1加入到5.4并用htmlspecialchars离开的unicode characers和验证显示,即使我有文件为无效'编码=“UTF-8”' – jcubic 2012-04-27 19:10:53
@jcubic:请发布该错误并且正在使用,以产生输出的代码的更多细节。 'htmlspecialchars'足够用于生成XML,您不需要转义非ASCII字符。 – bobince 2012-04-28 15:07:39
我不记得,因为我修复它,但它显示类似不能解码字符'?了'(验证)。 – jcubic 2012-04-28 16:02:21