用php5的simplexml解析各种feed

最近使用simplexml来解析各种feed源,碰到了一些小问题。 用simplexml处理atom数据 很多博客使用atom来输出数据,但是atom使用了名称空间(namespace),所以现在请求被命名的元素和本地名称时必须指定名称空间统一资源标识符(URI),还有一点就是simplexml的xpath方法无法直接query这个xml tree。 从 PHP 5.1 版开始,SimpleXML 可以直接对带名称空间的文档使用 XPath 查询。和通常一样,XPath 位置路径必须使用名称空间前缀,即使搜索的文档使用默认名称空间也仍然如此。registerXPathNamespace() 函数把前缀和后续查询中使用的名称空间 URL 联系在一起。 下面是使用xpath查询atom文档title元素的例子: $atom = simplexml_load_file(‘http://www.ooso.net/index.php/feed/atom’); $atom->registerXPathNamespace(‘atom’, ‘http://www.w3.org/2005/Atom’); $titles = $atom->xpath(‘//atom:title’); foreach ($titles as $title) echo “” . $title . “”; 用simplexml处理rss数据 wordpress可以输出rss2的数据源,这里面也有一些不同的namespace,比如dc。一个使用simplexml解析rss2的例子:

php5中的date函数

php5.1.1以后,date函数新增了以下常量。 自 PHP 5.1.1 起定义有以下常量来提供标准日期表达方法,可以用于日期格式函数(例如 date())。 DATE_ATOM(string) 原子钟格式(如:2005-08-15T15:52:01+00:00) DATE_COOKIE(string) HTTP Cookies 格式(如:Mon, 15 Aug 2005 15:52:01 UTC) DATE_ISO8601(string) ISO-8601(如:2005-08-15T15:52:01+0000) DATE_RFC822(string) RFC 822(如:Mon, 15 Aug 2005 15:52:01 UTC) DATE_RFC850(string) RFC 850(如:Monday, 15-Aug-05 15:52:01 UTC) DATE_RFC1036(string) RFC 1036(如:Monday, 15-Aug-05 15:52:01 UTC) DATE_RFC1123(string) RFC 1123(如:Mon, 15 Aug 2005 15:52:01 UTC) DATE_RFC2822(string) RFC 2822(如:Mon, 15 Aug 2005 15:52:01 +0000) […]

PHP4的历史任务完成

PHP.net宣布,他们将在今年年底停止php4的开发,安全方面的更新也会于2008年8月结束。 PHP4发布于2000年五月,这一年我刚刚学会拨号上网,申请email帐号收发邮件。在2004年,php家族的老五出世, 而这个时候,支持php4的主机以及开源软件已经四处开花。3年后,php4仍然在各大主机上占据绝对份额的优势,尤其是在国内。因为大量的开源代码仍然是php 4 only的,你不知道客户会在hosting上跑什么样的程序。还有一大批的php程序员在维护前人留下的php 4代码,或者在这个基础上接着开发,比如俺… 这对主机商或开发人员来说都不是一件好事情,客户不在乎你用的是php 4还是php 5,这无关紧要,只要代码能跑,功能实现就皆大欢喜了。 前不久的GoPHP5活动,是php开源世界开发人员对现状的一种回应,也是在php核心开发人员推动下的结果。只有得到目前广泛的php开发人员的支持,PHP.net才有底气说2007年底停止php4的开发。 php4能够在如此之久的时间里长盛不衰,证明php 4是成功的。它的历史任务,完成了! php5的一些参考资料

Go PHP5!

PHP5是在3年前发布的,在这期间,PHP4仍然在为我们提供服务,大量主机hosting上还是永远的php4,关于使用率可以参考php在2007五月的使用统计。之所以造成这种情况,有着多方面的原因。 首先PHP开发者还没摸透在没有php4的情况下,用php5来跑从前的应用会不会有潜在的问题。大量主机上仍然安装的是php4,这会使用户避免选择php5 only的web应用程序。也是因为这个原因,大量主机商还不能马上升级到php5,因为他们不知道用户将要跑php4或是php5的web应用。这样一来,php的开发者越发不能摆脱php4,他们为了适应环境,写出来的代码可能都是php4/php5兼容的。 这对php开发者来说,是如同梦魇一般的一个死循环。一些open source的php开发团体为了摆脱这个困境,终于决定做出一些动作来打破僵局了!!他们在2008年2月份以后发布程序将仅仅官方的支持php 5.2.0以后的版本(官方的支持意味着某些程序还是能保持php4的兼容性的,但是不承诺)!!这个活动被称之为GoPHP5!!这些php开发团体已知的名单如下: Drupal Joomla CakePHP Symfony(这个已经是php5 only了) Gallery WordPress 对于用户来说,使用php4或者php5无关紧要,他需要的仅仅是他的程序可以run。那么列表中拥有大量用户基础的php程序的转向,将会是驱动主机商升级到php5的极大动力。

用simplexml解析rss出错

尝试用simplexml解析一个rss数据源,碰到了一个不小的麻烦。每次解析会碰到一个报错: Warning: SimpleXMLElement::__construct() [function.SimpleXMLElement—construct]: Entity: line 161: parser error : Entity ‘Acirc’ not defined in D:\xampp\htdocs\rss.php on line 11 这是解析rss的php代码片段: try { $xml = new SimpleXMLElement($rss); var_dump($xml); } catch(Exception $e) { echo $e->getMessage(); } 查看rss数据源,发现里面有一些乱字符,尝试过滤掉乱字符。 用下面的xmlSafe函数过滤字符,问题解决。 function xmlSafe(&$xml_str) { $xml_str =preg_replace(“/[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]/”,”,$xml_str); }

ubuntu下安装php5 + pdo

这几天尝试把工作机迁到ubuntu上来做开发,系统安装好之后的首要任务是安装php+mysql的开发环境. 我打算直接安装php5, pdo_mysql, 下面是安装过程的记录 首先我直接用apt-get安装了apache2,php5,pear以及mysql5, 为了方便后续的安装,还加上了make和libmysqlclient sudo apt-get install apache2-mpm-prefork sudo apt-get install php5 sudo apt-get install php5-dev sudo apt-get install php5-pear sudo apt-get install mysql-server-5.0 sudo apt-get install make sudo apt-get install libmysqlclient15-dev pdo在ubuntu的apt里头似乎还找不到安装源,所以通过pecl来安装这个扩展,非常简单 —- 如果海底光纤能连通的话: pecl install pdo 增加一行: extension=pdo.so 到文件: /etc/php/apache2/php.ini /etc/php/cli/php.ini 接下来安装pdo_mysql碰到一些问题, 直接跑pecl install pecl_mysql会出现一些错误,搜索了一下发现是pecl本身的问题,下面是个比较简单的解决办法: wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz tar xzvf PDO_MYSQL-1.0.2.tgz cd […]

Pear的PHP_Compat包

Pear的PHP_Compat是个比较有趣的包,它提供了一些php4下也能使用的php5专有函数,比如file_put_contents,array_combine,str_split……….这样即使是在php4的主机上,也能提前享受一点php5函数的便利. 用法 <?php require_once ‘PHP/Compat.php’; // load file_put_contents PHP_Compat::loadFunction(‘file_put_contents’); // load str_split, array_chunk and file_get_contents PHP_Compat::loadFunction(array(‘str_split’, ‘array_chunk’, ‘file_get_contents’)); ?> 上面的例子说明,可以一次载入n个php5特有函数 Package Information: PHP_Compat http://pear.php.net/package/PHP_Compat

Embeder – 把php脚本编译成可执行文件

Embeder是一个命令行工具,可以将php脚本编译成windows下的可执行文件。从介绍上来看,它目前支持php5,所以也可以用来编译php-gtk2的程序文件。 使用前提 把下面列出来的脚本全部复制一遍,并放在同一个目录 php5ts.dll必须在path下,或者在当前目录 php_win32std.dll必须安装在php的extension目录下(见php-embed.ini的配置) embeder.exe也需要和上述文件在同一目录 测试文件 make.bat @echo off embeder.exe new myapp embeder.exe main myapp main.php embeder.exe add myapp include.inc include.inc

PHP5的Simplexml

php5新增了Simplexml extension,我们可以借助它来解析,修改XML。在IBM的知识库里找到一篇文章对此做了专门的介绍,而且比较详细,感兴趣的话可以看看最后的参考文档。 一个RSS Feed 下面是一个RSS的例子,我们准备用simplexml来解析它。 [xml]< ?xml version="1.0" encoding="UTF-8"?> Mokka mit Schlag http://www.elharo.com/blog en Penn Station: Gone but not Forgotten The old Penn Station in New York was torn down before I was born. Looking at these pictures, that feels like a mistake. The current site is functional, but no more; really just some office […]