Labels

2005 (136) 2004 (99) 2006 (84) 2007 (41) 2008 (41) 簡單生活 (24) 2012 (14) 網頁設計 (14) 電腦技巧 (13) 2009 (12) 2010 (10) PHP (10) 台灣晃一晃 (9) Learn Note (7) 地球這麼大 (6) 2011 (5) Mysql (3) Smarty (3) Vista (3) 手機待吐 (2) 2014 (1) 2021 (1) Composer (1) Laravel (1) MAC (1) MAMP (1) 新新人類新科技 (1)

20140408

Deprecated: Function session_register() is deprecated

PHP 5.3.0以後不贊成使用這個函式,PHP 6.0.0之後就不能再使用!


在以往的PHP版本中通常使用 session_is_register("name")檢查session是否存在,如果您使用$_SESSION[‘name’]=name來註冊的 話,則session_is_register("name")函數起不了作用。你可以使用isset($_SESSION[‘name’])來取代 session_is_register("name")。



版本
語法
PHP4
return session_is_registered($variable);
PHP5
return isset($_SESSION[$variable]);


在php5.3環境下session_register()函式是不能用的
所以應該把
session_register( “name” )
改成 
$_SESSION['name'] == null
  


而刪除session的語法也有改變 
session_destroy(“name”)


改為
unset($_SESSION[“name”]




Deprecated: Function ereg_replace() is deprecated

example :
$mytext = ereg_replace('[^A-Za-z0-9_]', '', $mytext );
is changed to
$mytext = preg_replace('/[^A-Za-z0-9_]/', '', $mytext );

Deprecated: Function set_magic_quotes_runtime() is deprecated

find:
set_magic_quotes_runtime(0);

replace with:
ini_set("magic_quotes_runtime", 0);

Deprecated: Function ereg() is deprecated


而PHP5.2版本以前ereg()都使用正常,在5.3以後,就要用preg_match來代替ereg。詳行請看PHP官方文件:ereg()頁面下有顯示
ereg() is deprecated as of PHP 5.3.0. preg_match() is the suggested alternative to this function. 
在PHP中有兩種正則表示法,一個是posix,一個是perl,PHP6打算廢除posix的正則表示方法所以後來就加了個 preg_match()

ereg()前面加個過濾提示信息符號即可->把ereg()變成@ereg()。但這樣把錯誤隱藏掉,在執行後面的程式碼,假如出錯也會連帶後面的資料出錯,這樣的方法並不是我們所想要的,所以在此並不推薦這方法。




Version
PHP 5.2 Version Before
PHP5.3 Version After
Function
Ereg()Eregi()
Preg_match()
舉例
ereg(“^[0-9]*$”,$String)
preg_match(“/^[0-9]*$/”,$Strimg)
說明
要加  /
特別提醒:posixperl的很明顯的表達區別就是是否加 /,所以與ereg相比,後者在正則的前後分別增加了兩個」/」符號,不能缺少。

PHP 5.3.0 後 split() 的替代方式

PHP 的 split() 非常方便, 但是 PHP 5.3.0 後, 不建議繼續使用 split(), 在使用上會出現警告訊息.

split() 不建議使用的原因

PHP 5.3.0 之後的 regex, 希望使用 PCRE 的規格, POSIX Regex 都不建議使用了(統一 Regex, 避免規格太多?).
所以下述是不建議使用的 Function (POSIX), 與建議替換成的 Function (PCRE) 列表, 詳可見: PHP: Differences from POSIX regex
  • POSIX → PCRE
  • ereg_replace() → preg_replace()
  • ereg() → preg_match()
  • eregi_replace() → preg_replace()
  • eregi() → preg_match()
  • split() → preg_split()
  • spliti() → preg_split()
  • sql_regcase() → No equivalent

PHP split() 替代方案

  • 需要 regex 的 split, 可用 preg_split() 代替
  • 不需要 regex, 只要要快速分割固定的字串, 可用 explode() 代替. (速度會比需要 regex 的快很多)