2012-04-27 137 views
0

我在使用RSS显示的数据上使用htmlentities,并且我使用unicode字符,因此它们显示的实体类似Á,而像http://feedvalidator.org/这样的服务显示为无效。如何将html entites添加到RSS feeds

我怎样才能添加这个实体的XML(如使用的命名空间),或者我应该使用不同的函数来转义字符像& < >

回答

2

这里是在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; 
} 
2

使用htmlspecialchars逃脱与XML特殊含义的字符。

使用正确的字符编码为其他字符。

(浏览htmlentities的文档建议您可以通过ENT_XML1并获得XML兼容的数字实体,如果您不打算使用正确的字符编码)。

+0

由于工作的功能,但我有PHP 5.3.3和ENT_XML1加入到5.4并用htmlspecialchars离开的unicode characers和验证显示,即使我有文件为无效'编码=“UTF-8”' – jcubic 2012-04-27 19:10:53

+0

@jcubic:请发布该错误并且正在使用,以产生输出的代码的更多细节。 'htmlspecialchars'足够用于生成XML,您不需要转义非ASCII字符。 – bobince 2012-04-28 15:07:39

+0

我不记得,因为我修复它,但它显示类似不能解码字符'?了'(验证)。 – jcubic 2012-04-28 16:02:21