在php升級到php5.3之後後,在使用的過程經常發現有的程序會出現Function eregi() is deprecated 的報錯信息。
是什麼原因呢?
這是因為php5.3中不再支持eregi()函數,而使用preg_match()函數替代。
解決的方法是:將eregi()函數替換成preg_match() 函數。
if(eregi('^test',$file))
可以替換為
if(preg_match('/^test/i',$file))
————-
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
* 需要 regex 的 split, 可用 preg_split() 代替
* 不需要 regex, 只要要快速分割固定的字串, 可用 explode() 代替. (速度會比需要 regex 的快很多)