一个多月前买59trip.com这个域名的时候,没想太多要做个什么样的网站,只是觉得这个域名还值得花10美刀买下来。后来就做了这个博客,天天写一些工作中碰到的技术问题,总结一下学习到的东西,顺便尝试一些新东西。但是www.59trip.com这个子域一直空着,毕竟域名和旅游相关,那么还是应该做个旅游相关的网站。没那么多精力,lilina是个不错的选择,只需要我去找找好玩的博客,然后聚合到一起。

lilina也很久没更新了,最新的稳定版本是几年前的0.7,1.0遥遥无期,不过我还是下了个每日构建版,有问题大不了自己改。装上之后果然不能用,添加feeds之后,首页一直没有任何显示,一步一步找问题,最后发现是lilina使用的simplepie这个开源的RSS解析器的问题。 打开文件: lilina/inc/contrib/simplepie/simplepie.inc,在1508行,使用了一个字符串“&”来测试php自带的xml解析器是否能正常工作;可惜我的php 5.2.9版本就是不能正常工作,于是就一路返回得不到任何结果。解决方法很简单,在内容中随便添加什么个字母数字就行了。 <pre class=php name=code>1505 if ($xml_is_sane === null) 1506 { 1507 $parser_check = xml_parser_create(); 1508 xml_parse_into_struct($parser_check, ‘123&’, $values); 1509 xml_parser_free($parser_check); 1510 $xml_is_sane = isset($values[0][‘value’]); 1511 } 1512 if (!$xml_is_sane) 1513 { 1514 return false; 1515 }</pre>

查php的手册,xml_parse_into_struct这个函数应该是支持解析“&”这样的字符串的,

This is a great little function for a lot of XML work, but note that this function does not handle XML entities properly.

The basic XML entities < > & “ are fine, just anything else will not work:

If the entity is defined in the XML header, the parser will drop it completely from the struct it creates.

If the entity is not defined in the XML then the parser will crash out with an undefined entity error.

You should be able to work around this limitation by using a preg_replace on your XML string before passing it to the parser.

(Further details in Bug #35271; this is just a warning to those thinking of using this function for parsing real XML documents not just trivial XML examples)</em>

这里有个bug report反馈了类似的问题,但是为什么现在还有呢?无论如何,可以用了,留个存照。 [caption id=”attachment_339” align=”alignnone” width=”300” caption=”lilina”]lilina[/caption]


Simon Lee

My blog