1. 程式人生 > >php 替代被棄用函式的

php 替代被棄用函式的

下面列舉了部分被棄用的函式: 
call_user_method()(使用 call_user_func() 替代) 
call_user_method_array() (使用 call_user_func_array() 替代) 
define_syslog_variables()
dl()
ereg() (使用 preg_match() 替代) 
ereg_replace() (使用 preg_replace() 替代) 
eregi() (使用 preg_match() 配合 ‘i’ 修正符替代) 
eregi_replace() (使用 preg_replace() 配合 ‘i’ 修正符替代) 
set_magic_quotes_runtime()
 以及它的別名函式  magic_quotes_runtime()
[color=olive]session_register() (使用 $_SESSION 超全部變數替代) 
session_unregister() (使用 $_SESSION 超全部變數替代) 
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() (使用 mysql_real_escape_string() 替代) 
    廢棄以字串傳遞區域設定名稱. 使用 LC_* 系列常量替代. 
mktime() 的 is_dst 引數. 使用新的時區處理函式替代. 

涉及到的主要的函式遷移如下: 
刪除函式 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 ] ) intpreg_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 直接來替換。 
spliti 函式用 explode 或則 preg_split 函式替代split 切分字串,如果無須用到正則表示式,使用 explode 替換是最好不過,速度最快.對於使用正則表示式切分字串,則使用 preg_split 函式替代。替代過程和 ereg/ereg_replace 類似,只是在第一個正則表示式引數中做文章,將 split 的正則表示式前後加上一個 PCRE 的分隔符號。