PHP 5.3 开始,为了更好的向 PHP 的未来版本(PHP6) 过渡,将未来不再支持的函数标记为 DEPRECATED。在代码中使用这些函数,将毫不留情的在页面中显示警告信息:“使用了过时的函数…”,诸如此类。
那么如何面向未来,让现有的 PHP 程序平滑的向下一代 PHP 引擎过渡呢?

配置文件迁移
PHP 5.3 开始,配置文件
php.ini 中的一些配置将会在 PHP 执行时显示过时警告,这些配置将在 PHP6中不再存在,相关功能也将关闭。

1.define_syslog_variables
2.register_globals

3.register_long_arrays
4.safe_mode
5.magic_quotes_gpc

6.magic_quotes_runtime
7.magic_quotes_sybase
函数迁移
涉及到的主要的函数迁移如下:

删除函数 define_syslog_variables 引用
•删除对函数
define_syslog_variables 的引用
•将变量 $LOG_ERR, $LOG_USER 等用常量 LOG_USER,
LOG_USER, … 替代
ereg, eregi 函数用 preg_match
函数替代•这几个函数的函数声明
int  ereg (  string  $pattern ,  string  $string [, 
array  &$regs ] )int  eregi (  string  $pattern ,  string  $string [, 
array  &$regs ] )int  preg_match (  string  $pattern ,  string  $subject [, 
array  &$matches [,  int  $flags [,  int  $offset ]]]
)•虽然三者的第一个参数都是字符串,表示一个正则表达式。但是 preg_match 用的是 PCRE(Perl
兼容的正则表达式语法):正则表达式的两端用一个符号做边界,如 “/pattern/” 或者 “#pattern#”
•eregi
是乎略大小写的匹配,转换为 preg_match,第一个参数,用PCRE的参数来乎略大小写,如:”/pattern/i” 或者 “#pattern#i”

•两者的第三个参数返回的匹配的数据结构不同。ereg
的第三个参数在调用结束后,返回的是一个字符串数组,分别为完整匹配字串和各个子匹配字串。preg_match 返回的是二维数组,相当于 ereg
的字串数组中的字串在 preg_match 是一个数组,分别保存匹配值以及匹配位置。
•如果要进行多次匹配,PHP 提供了 preg_match_all
函数,其第三个参数的返回值则是一个三维数组;
ereg_replace, eregi_replace
函数用 preg_replace 函数或者 str_replace 函数来替代•和前面的 ereg 替换为 preg_match
类似,第一个参数要进行转换,头尾增加一个符号,如:”/pattern/” 或者 “#pattern#”, …
•eregi_replace 到
preg_replace 的替换,在第一个参数的后面增加正则表达式参数。如:”/pattern/i” 或者 “#pattern#i”, …
•如果
ereg_replace 的第一个参数不是正则表达式,可以用 str_replace 直接来替换。
split, spliti 函数用 explode 或则 preg_split 函数替代•split
切分字符串,如果无须用到正则表达式,使用 explode 替换是最好不过,速度最快
•对于使用正则表达式切分字串,则使用 preg_split
函数替代。替代过程和 ereg/ereg_replace 类似,只是在第一个正则表达式参数中做文章,将 split 的正则表达式前后加上一个 PCRE
的分隔符号。
mysql_db_query 函数用 mysql_select_db 和
mysql_query 函数替代•mysql_db_query 在未来版本不再支持
•将其转换为两次调用,分别是用
mysql_select_db 选择数据库,用 mysql_query 来执行 SQL 查询
mysql_escape_string 函数用 mysql_real_escape_string 函数替代

•mysql_escape_string 未来版本不再支持
•使用 mysql_real_escape_string 替代
session_register 函数,session_unregister,session_is_registered
函数用 $_SESSION 全局变量替代•这三个 session 相关函数未来不再支持
•其功能相当于直接操作全局数组
$_SESSION。可以直接向数组中赋值或者执行相应的 unset 即可实现相关功能
在代码中查抄过时函数

下面这个脚本可以用于在代码树中查找过时的 PHP 函数

#!/bin/shOPTS="-rHw"; verbose=0while [
$# -gt 0 ]; do  case $1 in    -v)      verbose=1; shift ;;    -q)     
verbose=0; shift ;;    -*)      OPTS="$OPTS $1"; shift ;;    *)      break; ;; 
esacdoneif [ $# -eq 0 ]; then  echo "Usage $0 [-v] "  exit 1fi[ $verbose -eq 0 ]
&& OPTS="$OPTS -l"DEPRECATED="call_user_method call_user_method_array
define_syslog_variables            dl set_magic_quotes_runtime
magic_quotes_runtime            set_socket_blocking sql_regcase           
mysql_db_query mysql_escape_string            session_register
session_unregister session_is_registered            eregi? eregi?_replace
spliti?"OPTS="$OPTS --include=*.inc --include=*.php --include=*.php5"for item in
$DEPRECATED; do  echo "##### find deprecated item: $item in $1: #####"  grep
$OPTS -E "$item\s*$" $*  grep $OPTS -E "$item\s*\(" $*  echo
""done+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Fix
`ereg is deprecated` errors in PHP 5.3If you upgraded to PHP 5.3, chances are
high you’re going to run into a few warnings or deprecated function messages.An
example is the ereg family of functions, which are gone for good, as they were
slower and felt less familiar than the alternative Perl-compatible preg
family.To migrate ereg():ereg('\.([^\.]*$)', $this->file_src_name,
$extension);

php5.2转向 PHP 5.3 的 PHP 开发的更多相关文章

  1. Gulp常用前端流程自动化配置

    前言 近期的项目全部由Grunt + LESS 转向改用Gulp + SASS 进行前端开发,也就奔着Gulp那比较好用的自定义函数而来的. 一.package.json文件配置如下: { " ...

  2. 资深人士剖析微软开源.NET事件:战略重心已经从PC转移到云端

    本文是雷锋网对我的访谈整理的文章,源地址是 http://www.leiphone.com/news/201411/6KaGhD7PDABnvrRf.html 2014年11月13日,微软表示开源.N ...

  3. [moka同学笔记]使用composer 安装yii2以及遇到的问题

    [一.Yii2安装过程] 使用composer安装,composer安装请参考其他博客 1.下载 Yii2 高级模板 跟普通模板一样 , 可以通过 Composer 和 github 下载 ,不过官方 ...

  4. 移动web开发,12个触摸及多点触摸事件常用Js插件

    如今移动互联网已经占据了主流地位,越来越多的开发者开始从桌面转向移动平台.与桌面开发不同的是,在移动领域中,不同的操作系统.大量不同屏幕尺寸的移动设备.触摸手势操作等,这都给开发者带来了一定的难度和挑 ...

  5. Scala教程

    Scala表示可扩展性语言,是一种混合函数式编程语言.它是由Martin Odersky创建,并于2003年首次发布. Scala平滑地集成面向对象和函数式语言的特点,并且Scala被编译在Java虚 ...

  6. 自定义安装php开发环境(1)--apache和php整合

    第一步:安装apache 第二步:下载php核心包php-5.3.3-Win32-VC6-x86.zip.并放入开发环境文件夹C:/phpenv/文件夹下 第三步: 将apache 和php 整合 也 ...

  7. 转 RMI、RPC、SOAP通信技术介绍及比对

    http://www.open-open.com/home/space.php?uid=37924&do=blog&id=8974 1.RMI 使用java的程序员,对于RMI(Rem ...

  8. Axis,axis2,Xfire以及cxf对比

    http://ws.apache.org/axis/ http://axis.apache.org/axis2/java/core/ http://xfire.codehaus.org/ http:/ ...

  9. RMI、RPC、SOAP通讯技术介绍及比对 - XML/SOAP

    RMI.RPC.SOAP通信技术介绍及比对 1.RMI 使用java的程序员,对于RMI(RemoteMethod Invoke,远程方法调用)一定不陌生,在java中,为了在分布式应用开发时,能够方 ...

随机推荐

  1. 李洪强iOS开发之OC面向对象—多态

    OC面向对象—多态 一.基本概念 多态在代码中的体现,即为多种形态,必须要有继承,没有继承就没有多态. 在使用多态是,会进行动态检测,以调用真实的对象方法. 多态在代码中的体现即父类指针指向子类对象. ...

  2. hadoop疑难杂症解析

    1:Shuffle Error: Exceeded MAX_FAILED_UNIQUE_FETCHES; bailing-outAnswer:程序里面需要打开多个文件,进行分析,系统一般默认数量是10 ...

  3. 可灵活扩展的自定义Session状态存储驱动

    Session是互联网应用中非常重要的玩意儿,对于超过单台部署的站点集群,都会存在会话共享的需求.在web.config中,微软提供了sessionstate节点来定义不同的Session状态存储方式 ...

  4. java开发--配置ssh

    下面,我查阅了大量资料,走了不少错路,最后总结了经验后搭建出来的SSH框架. 希望第一次搭建SSH框架的会从中得到启发. 开发环境: eclipse-jee-kepler-SR1-win32 4.3. ...

  5. 如何用虚拟机装SQL Server

    更新(2016.3.14) 看来之前还是写的太简了,来问的同学有点多. 所以还是详细一些吧. 大概步骤 装好Virtual Box这个软件,免费的 下载window server 2003系统镜像,然 ...

  6. TCP连接探测中的Keepalive 和心跳包

    采用TCP连接的C/S模式软件,连接的双方在连接空闲状态时,如果任意一方意外崩溃.当机.网线断开或路由器故障,另一方无法得知TCP连接已经失效,除非继续在此连接上发送数据导致错误返回.很多时候,这不是 ...

  7. Ubuntu 14.10下安装深度音乐客户端

    很多刚从windows系统投靠到ubuntu的机油,在听音乐时不是很舒心.毕竟ubuntu软件中心的很多影音软件都是国外的朋友编写的,所以很多时候国内的朋友用着很不舒服.今天给大家推荐的是国内开发者针 ...

  8. 批处理 —— 每天生成一个以日期命名的文件(Win XP)

    想达到这样一个效果:每天在某个目录下生成一个以日期命名的文件(如,0705.txt). 第一步,新建一个批处理文件 新建一个文件,比如[create_day_file.bat].编辑,输入以下内容 : ...

  9. [转]c/c++输入函数

    最全输入函数 c/c++ 一: c=getchar(); 功能:读入一个字符 说明:调用此函数时要求在程序的第一行有预编译命令:#include<stdio>,不过在做c++时 有#inc ...

  10. Lucene学习笔记(更新)

    1.Lucene学习笔记 http://www.cnblogs.com/hanganglin/articles/3453415.html