我正在用PHP构建RSS feed聚合器/阅读器。由于RSS本质上是用户生成的内容,因此我不想依赖于提要内容是安全的。
我正在寻找有关清理Feed内容以便在用户设备上进行存储和显示的建议。目前,我正在使用htmlentities(feed_content)
来逃避所有字符,但这不起作用,因为UTF-8编码了无法在Javascript中解码的字符(我用于前端构造)。
- Original: "Soundtrack: Dinosaur Jr. - Don’t Pretend You Didn’t Know I hadn’t thought much..."
- After htmlentities: "Copyright-Infringing Tweets Will Now Be “Withdrawn” Instead of “Disappeared..."
- After JS decodeURI: "Copyright-Infringing Tweets Will Now Be “Withdrawn” Instead of “Disappeared..."
如果我删除上面的htmlentities,文本显示正确。但我不确定这是否是确保数据消毒的正确方法
答案 0 :(得分:1)
将正确的字符集传递给htmlencode:
echo htmlentities($str, ENT_QUOTES, "UTF-8");
......但通常没有必要这样做。只需确保设置正确的标题,以便浏览器正确解释为utf8:
header('Content-Type: text/html; charset=utf-8');
或者使用json加载:
header('Content-type: application/json; charset=utf-8');