2010-06-20 75 views

回答

2

Ereg已棄用,因爲它已被PCRE擴展替代。究其原因(一個或多個)它被取代,不推薦使用在以下鏈接回答,但你在這裏保存一段時間是複製並粘貼答案:

注:的preg_match(),它使用Perl兼容的正表達式語法,通常是ereg()的更快替代方法。

兩者之間PHP ereg vs. preg

一個區別是,額日格查找最長匹配的結果,而預浸尋找的第一個結果。以下是兩者之間的區別列表,以幫助您確定如何更好地更新代碼: http://www.php.net/manual/en/reference.pcre.pattern.posix.php

需要注意的是,PHP 6.0完全刪除了ereg,因此如果您最終將要將代碼移動到可能使用PHP 6.0的較新服務器,ereg函數將不再可用。

0

一個可能的原因是性能問題,正如其他人已經回答的那樣。

我想補充另一個(但)可能的原因:通過提供該網址

<?php 
$arg=$_GET['key']; 
if (ereg('^[A-Za-z0-9]+$', $arg) === FALSE){ 
    die('Invalid key'); 
} 
# Do some other things with $arg 
?> 

人們可以繞過它:

假設你寫了這樣一段代碼(PHP 5.3)

foo.php?key=A%00text 
       ^~~~ 

text部分是任意東西他想,這留下了巨大的安全漏洞的代碼。 preg_match()但是,沒有這個問題。所以你最好把你所有的代碼移植到preg,因爲ereg在PHP6.0中已經不再可用了。

相關問題