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);
分享到:
相关推荐
标题提到的是ECShop与PHP版本兼容性的关键信息,表示此版本的ECShop已解决了在PHP 5.2以上,包括PHP 5.3、5.5和5.6版本中的兼容问题。这意味着用户无需再为了运行ECShop而特意去安装较低版本的PHP。 描述中提到的...
本文将详细介绍如何在Ubuntu环境下成功地安装并配置PHP 5.2和PHP 5.3,以便于开发和维护基于不同PHP版本的应用程序。 #### 知识点一:Ubuntu默认PHP版本与项目需求冲突 在Ubuntu系统中,默认安装的PHP版本为5.3。...
标题 "php_mongo-1.3.1( PHP 5.2, 5.3 and 5.4) builds for Windows VC9 (32bit and 64bit)" 描述了一个针对PHP 5.2、5.3和5.4版本的MongoDB扩展的Windows构建,适用于Visual C++ 9编译器(32位和64位)。...
本文将详细探讨PHP与Memcached的集成扩展——php_memcache,以及其在不同PHP版本(5.2、5.3、5.4)中的应用和优化策略。 首先,php_memcache是PHP官方提供的一个非持久化存储的扩展,用于连接和操作Memcached服务器...
标题中的“PHP5.2、5.3、5.4、5.5、5.6的php memcache dll扩展”指的是PHP编程语言的一个特定扩展,即`memcache`,适用于不同版本的PHP(5.2到5.6)。这个扩展主要用于在PHP应用程序中与Memcached缓存系统进行交互,...
PHP 5.3 版本相对于 PHP 5.2 带来了许多重大改进和新特性,这使得 PHP 更加强大且现代化。以下是对这些变化的详细解释: 1. **名称空间(Namespaces)**: 名称空间是 PHP 5.3 引入的关键特性之一,它解决了在大型...
注:如使用集成环境成功率低,请自行配置php apache,表示win7下wamp php5.4.3基础上配置拓展,成功率极低。费时。 拓展安装调试方法: 编写调试php文件 <?php memcache(); 通过命令行执行测试,因为php拓展安装...
PHP基于Laravel 5.2开发的Git管理系统 PHP基于Laravel 5.2开发的Git管理系统 PHP基于Laravel 5.2开发的Git管理系统 PHP基于Laravel 5.2开发的Git管理系统 PHP基于Laravel 5.2开发的Git管理系统 PHP基于Laravel ...
压缩包包括多种版本的mongo扩展,由于下载了别人的php_mongo扩展不适用,所以自己整理了大量的mongo扩展,提供给不知道去官方网站下载的朋友使用。 大家可以根据自己不同的电脑系统及PHP版块选择不同的mongo扩展, ...
软件介绍 WinNTSetup,系统安装利器,目前最好用的系统安装器,Windows系统安装部署工具。支持所有Windows平台,支持多系统安装、完全格式化C盘、支持创建VHD虚拟硬盘、在Windows及PE系统下运行,允许在安装前对系统...
总的来说,这些PHP扩展使开发人员能够在Windows平台上使用各种PHP版本(5.2、5.3、5.4)无缝地与MongoDB数据库交互,极大地丰富了PHP在大数据处理和NoSQL领域的应用能力。为了确保最佳性能和稳定性,应当定期更新...
PHP ZendDebugger,支持Windows PHP版本(4.3.x, 4.4.x, 5.0.x, 5.1.x,5.2.x,5.3.x),老的版本这年头连官方网站都不知道去哪里找了。有线程安全(ts)与不安全(nts),请放心使用。这种资源比单个的dll文件要好一点,...
在这个上下文中,"WHMCS 授权文件(5.2、5.3)开心版5.3.X系列通用"指的是适用于WHMCS 5.2和5.3版本的特定授权文件,特别是5.3.X系列的通用版本。 **WHMCS授权系统** WHMCS的授权系统是其核心组成部分,用于验证...
好不容易才收集齐全的php_redis.dll各版本扩展 php5.2 5.3 在配置文件php.ini里面添加 extension=php_redis.dll php5.3n 5.4n 在配置文件php.ini里面添加 extension=php_igbinary.dll extension=php_redis.dll
标题中的“PHP5.2、5.3、5.4、5.5的memcache dll扩展下载 php_memcache.dll”表明这是一个关于PHP不同版本(5.2、5.3、5.4、5.5)的Memcache扩展的DLL文件集合。PHP的Memcache扩展是一个用于连接和操作Memcached...
`pthreadGC2.dll`是线程库,`php_memcache_vc6.dll`可能是PHP的Memcached扩展,而`phpStudy_2014_setup.1413444920.exe`是PHPStudy的安装程序,一个流行的PHP开发环境。`ffmpeg.exe`是`ffmpeg`的可执行文件,`说明....
**SARscape 5.2:雷达图像处理的利器** SARscape 5.2是一款由sarmap公司精心打造的、专为雷达图像处理设计的软件,它在国际上享有高度声誉。这款软件的核心优势在于其灵活性和适应性,能够满足用户多样化的需求。...
CCS5.3 官方下载地址及破解证书,本人亲自安装验证,能够使用!破解完美!
标题中的"PHP5.2、5.3、5.4、5.5、5.6的php memcache dll扩展.zip"表明这是一个包含了适用于不同PHP版本(从5.2到5.6)的memcache扩展的压缩包。这个扩展是PHP与Memcached缓存系统进行交互的接口,它允许PHP应用程序...
这个动态链接库(DLL)文件与PHP的三个不同版本兼容:PHP 5.2、PHP 5.3和PHP 5.4。DLL文件在Windows操作系统中扮演着关键角色,它们包含了可执行代码和数据,可供其他程序调用,实现特定功能。 PHP是一种广泛使用的...