>백엔드 개발 >PHP 튜토리얼 >Atom验证时报错"not well-formed"

Atom验证时报错"not well-formed"

WBOY
WBOY원래의
2016-06-06 20:52:302024검색

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

Atom验证时报错

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

function escape($string) {
    return str_replace(array('&','"',"'",''),
        array('&','"',''','<','>'),
        $string);
}

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

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

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

回复内容:

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

Atom验证时报错

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

function escape($string) {
    return str_replace(array('&','"',"'",''),
        array('&','"',''','<','>'),
        $string);
}

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

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

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

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

Atom验证时报错

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.