2012-11-27 31 views
2

Possible Duplicate:
How can I convert ereg expressions to preg in PHP?不推薦使用:功能額日格()已過時

我的聯繫方式是othervise的工作,但我不斷收到以下錯誤 :

Deprecated: Function ereg() is deprecated in/home/.....

我真的失去了這裏,但我明白這是需要調整的部分。

if (empty($_REQUEST['name'])) { 
    $pass = 1; 
    $alert .= $emptyname; 
} elseif (ereg("[][{}()*+?.\\^$|]", $_REQUEST['name'])) {  
    $pass = 1; 
    $alert .= $alertname; 
} 
if (empty($_REQUEST['email'])) { 
    $pass = 1; 
    $alert .= $emptyemail; 
} elseif (!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z] {2,3})$", $_REQUEST['email'])) { 
    $pass = 1; 
    $alert .= $alertemail; 
} 
if (empty($_REQUEST['message'])) { 
    $pass = 1; 
    $alert .= $emptymessage; 
} elseif (preg_match("[][{}()*+?\\^$|]", $_REQUEST['message'])) { 
    $pass = 1; 
    $alert .= $alertmessage; 
} 

解決的方法將高度讚賞

+0

你不是http://computertrouble.com/的主人的任何機會,你?只是好奇。 –

回答

25

您必須使用preg_match而不是ereg,因爲最後一個不推薦使用。

更換它不是一個大問題:

ereg("[][{}()*+?.\\^$|]", $_REQUEST['name']) 

將變爲:

preg_match("/[][{}()*+?.\\^$|]/", $_REQUEST['name']) 

附:我不得不修改一百多個文件,而我是移植我的老項目,PHP 5.3,以避免手工修改我用下面的腳本來做到這一點對我來說:

function replaceEregWithPregMatch($path) { 
    $content = file_get_contents($path); 
    $content = preg_replace('/ereg\(("|\')(.+)(\"|\'),/', 
          "preg_match('/$2/',", 
          $content); 
    file_put_contents($path, $content); 
} 

我希望它能幫助。

+1

請注意'preg_match'中有[delimeters](http://php.net/manual/en/regexp.reference.delimiters.php)。 –

1

功能ereg()被棄用,不應使用任何更多。 documentation告訴您該做什麼(改爲使用preg_match)。

0

就像你說的 - 不bigie,它就像一個魅力:

if (empty($_REQUEST['name'])) { 
    $pass = 1; 
    $alert .= $emptyname; 
} elseif (preg_match("/[][{}()*+?.\\^$|]/", $_REQUEST['name'])) { 
    $pass = 1; 
    $alert .= $alertname; 
} 
if (empty($_REQUEST['email'])) { 
    $pass = 1; 
    $alert .= $emptyemail; 
} elseif (!preg_match("#^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$#i", $_REQUEST['email'])) { 
    $pass = 1; 
    $alert .= $alertemail; 
} 
if (empty($_REQUEST['message'])) { 
    $pass = 1; 
    $alert .= $emptymessage; 
} elseif (preg_match("/[][{}()*+?\\^$|]/", $_REQUEST['message'])) { 
    $pass = 1; 
    $alert .= $alertmessage; 
} 

謝謝你們

相關問題