寫正則的時候可能會碰到用ereg()時出現錯誤,如:Deprecated: Function eregi() is deprecated ××××××××,原因就是php5.3已經不支持ereg(),可以用preg_match() i 參數替代,比如:ereg(“^[[:alnum:]]+$”, $pass); ——> preg_match(“/^[[:alnum:]]+$/i”, $pass);
以下是詳細說明:
php 5.3 從一方面來講,可以說在07年計劃PHP6的中的一個pre版本,增加了很多功能,統一了很多語法,使PHP變得更加強大與簡潔。
說到統計架構規劃,PHP當然會對一些別名,重復功能function進行歸類整理,並把一些不用的正式在php 5.3以後刪除掉.故不建議在新項目繼續使用.
PHP 5.3 有兩個deprecated,
E_DEPRECATED and E_USER_DEPRECATED
以下是在舊的項目中會在php 5.3以後碰到的問題
* define_syslog_variables
* register_globals
* register_long_arrays
* safe_mode
* magic_quotes_gpc
* magic_quotes_runtime
* magic_quotes_sybase
* 在PHP.ini 注釋用#已經不再建議使用.
Deprecated functions:
* call_user_method() 可以用 call_user_func() 替代
* call_user_method_array() 可以用 call_user_func_array() 替代define_syslog_variables()
* dl() 反對在使用DL加載擴展,php5.3 以後應用php.ini配制
* ereg() 可以用 preg_match() 替代
* ereg_replace() 可以用 preg_replace() 替代
* eregi() 用 preg_match() i 參數替代
* eregi_replace() 用 preg_replace() i 參數替代
* set_magic_quotes_runtime() 用 magic_quotes_runtime() 替代
* session_register() session_unregister() session_is_registered()
* 以上三個統一用 $_SESSION 替代
* set_socket_blocking() 用 stream_set_blocking() 替代
* split() 用 preg_split() 替代
* spliti() 用 preg_split() 模式 ‘i’ 替代
* sql_regcase()
* mysql_db_query() 用 mysql_select_db() mysql_query() 替代mysql_escape_string() 用 use mysql_real_escape_string() 替代
* 關於時區處理,統一用Timezone對像
Deprecated features:
* 直接返加new 實例不再建議使用. PHP 6 將不再支持
* Call-time pass-by-reference 參數現在不再建議使用 PHP 6 將不再支持
* 用 {} 訪問字符串順序不再建議使用. 統一用 [] 代替. PHP 6 將不再支持
當然如果項目緊急,又要在php 5.3 使用以上方法,可以用下面的方法去做
在php.ini 增加
php_flag allow_call_time_pass_reference On php_value error_reporting “E_ALL & ~E_NOTICE & ~E_DEPRECATED”
*