php - Atom验证时报错"not well-formed"
天蓬老师
天蓬老师 2017-04-10 13:10:00
[PHP讨论组]

我在SegmentFault的rss订阅支持里使用了atom标准,我仔细阅读过这一标准,而且以前也开发过很多atom订阅的程序,所以看起来似乎没什么困难,而且开发出来在阅读器(google reader, etc.)里面也表现良好。但是当我使用w3c的feed验证时它给我报了这样一个错误(验证地址: http://validator.w3.org/feed/check.cg...)

这是一个很令人困惑的错误,因为通常not well-formed错误可能会发生在一些特殊字符没有escape的时候,但是我已经在输出之前对内容做了以下处理

function escape($string) {
    return str_replace(array('&','"',"'",'<','>'),
        array('&amp;','&quot;','&apos;','&lt;','&gt;'),
        $string);
}

所以输出的内容是不会有特殊字符的问题。我尝试把内容放在<!CDATA[]]>里面括起来,但是都无效。

更令人奇怪的是,似乎这个错误只是出现在这篇文章中(也就是只针对特定的字符),在不包涵这篇文章的feed中验证就会通过,比如: http://validator.w3.org/feed/check.cg...。

我自己怀疑是atom标准对UTF-8的编码支持有问题,或者我还有什么地方没有设置好,不知道有没有好的解决办法。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
阿神

你的代码没有问题,我仔细看了下你出现问题的那篇文章,开始没有丝毫头绪,后来干脆把它copy到vim里来看,然后我发现了这个

看到没有,在"一种"和"如芒在背"之间有一个不可见字符,这种字符会引起第三方验证程序的编码错误,但是基本上不会影响阅读器的使用。去掉这个字符应该就没有问题了。这种字符一般都是切换输入法时出来的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号