2010-06-20 109 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中已经不再可用了。

相关问题