- 
      有了一些新关键字。
      
- 
      strrpos() 和 strripos()
      如今使用整个字符串作为 needle。
      
- 
      非法使用字符串偏移量会导致 E_ERROR 而不是
      E_WARNING。一个非法使用的例子:$str = 'abc'; unset($str[0]);.
      
- 
      array_merge() 被改成只接受数组。如果传递入非数组变量,对每个此类参数都会发出一条
      E_WARNING 信息。要小心因为你的代码有可能疯狂发出
      E_WARNING。
      
- 
      PATH_TRANSLATED 服务器变量在 Apache2 SAPI 中不再暗中设定,这和 PHP 4
      中的情形相反,如果 Apache 没产生此值则其被设为和
      SCRIPT_FILENAME 服务器变量一样的值。此修改是为了遵守
      CGI 规范。更多信息见 bug #23610,并参考手册中
      $_SERVER['PATH_TRANSLATED']
      的说明。此问题也影响到 PHP >= 4.3.2 的版本。
      
- 
      Tokenizer 扩展不再定义
      T_ML_COMMENT 常量。如果把
      error_reporting 设为 E_ALL,PHP
      将产生一条消息。尽管 T_ML_COMMENT
      从来都没用到过,还是在 PHP 4 中定义了。在 PHP 4 和 PHP 5
      中 // 和 /* */ 都被解析为 T_COMMENT
      常量。但是 PHPDoc 风格的注释 /** */,自 PHP 5 开始被
      PHP 解析,被识别为 T_DOC_COMMENT。
      
- 
      如果 variables_order
      包括“S”,$_SERVER 应该带有 argc 和 argv 被产生。如果用户特别配制系统不创建
      $_SERVER,那此变量当然就不存在了。改变的地方是不管 variables_order 怎么设定,在
      CLI 版本中 argc 和 argv 总是可用的。本来 CLI
      版不是总会产生全局变量 $argc 和 $argv 的。
      
- 
      没有属性的对象不再被当成“empty”。
      
- 
      有些情况下类必须在使用前被定义。这仅在使用了一些 PHP 5
      的新特性的时候发生。其它情况下行为都没变。
      
- 
      get_class(),get_parent_class()
      和 get_class_methods()
      如今返回的类/方法名和定义时的名字一致(区分大小写),对于依赖以前行为(类/方法名总是返回小写的)的老脚本可能产生问题。一个可能的解决方法是在脚本中搜索所有这些函数并使用
      strtolower()。
      - 
      区分大小写的改变也适用于魔术常量
      __CLASS__,__METHOD__
      和 __FUNCTION__。其值都会严格按照定义时的名字返回(区分大小写)。
      
- 
      ip2long() 在传递入一个非法
      IP 作为参数时返回 FALSE,不再是
      -1。
      
- 
      如果在包含文件中定义有函数,则不管在 return()
      之前还是之后都可以在主文件中调用。如果文件被包含两次,PHP 5
      会发出致命错误,因为函数已经被定义,而 PHP 4
      不管这个。因此推荐使用 include_once()
      而不要去检查文件是否已被包含以及在包含文件中有条件返回。
      
- 
      include_once() 和 require_once()
      在 Windows 下先将路径规格化,因此包含
      A.html 和 a.html 只会把文件包含一次。