不推荐使用的功能

时间:2009-11-16 10:20:55

标签: php deprecated

为什么PHP中的某些函数(例如eregi)已弃用?我通常使用eregi进行电子邮件验证。

我应该使用它,还是可以使用其他功能?

7 个答案:

答案 0 :(得分:5)

如上所述,您不应该使用eregi或任何其他已弃用的函数,因为它们已在下一版本的PHP中删除。

查看基于PCRE(Perl兼容正则表达式)备选方案的the preg* functionspreg_matchpreg_match_all是电子邮件验证所需的功能)。 eregi *函数是基于posix的正则表达式,因此PCRE的语法略有不同,但并不是一个重大变化。

为什么函数会被弃用? Wikipedia建议:

  • 该功能已被更强大的替代功能所取代。
  • 该功能被认为是无关的,将来会被删除,以便简化整个系统。
  • 该软件的未来版本计划进行重大的结构更改,这使得支持旧功能变得不可能(或不切实际)。
  • 标准化或提高命名的一致性
  • 该功能包含设计缺陷 - 通常是安全漏洞 - 因此应该避免,但现有代码依赖于它。

答案 1 :(得分:5)

eregeregi已被弃用,因为它们不支持Unicode。

在回答问题"Why is ereg being deprecated?"时,Rasmus Lerdorf有这样的说法:

  

真正的答案是没有   ereg函数中的Unicode支持,   无论喜欢与否,世界都在发展   的Unicode。

请参阅PHP-DEV邮件列表上的the discussion

答案 2 :(得分:0)

不应使用不推荐使用的功能;这是因为,虽然它们在当前版本的解释器中正常工作,但它们可能(并且将会)从将来的版本中完全删除。

因此,如果您在旧项目中使用它们,您也可以将它们保留(但在迁移到新的php版本时,您的项目可能会中断)。

但绝对不要在新项目中使用它们。

答案 3 :(得分:0)

它的用法是正确的,但已被弃用。这意味着在将来的PHP版本中,此方法可能会被删除。这可能是由于安全性,冗余或其他原因造成的。通常还有其他方法可以使用而不是这些方法(例如eregi - > preg_match)

答案 4 :(得分:0)

如果您希望脚本向前兼容,则不应使用已弃用的函数。他们现在工作,但未来可能不会工作。或者更糟糕的是,他们提出了一个关键的错误,这个错误无法修复,但需要通过修复单个函数来解决更大的问题。

在您的情况下,eregi将从PHP 6中删除,您的脚本将失败。请改用preg_match()preg_match_all()

答案 5 :(得分:0)

正如其他人所提到的,你不应该使用已弃用的函数,而应该查看preg函数。

特别是对于电子邮件验证,如果您的Web应用程序将在PHP 5.2及更高版本的服务器上运行,则可能值得查看PHP的filter(特别是filter_var)函数。过滤器功能还可用于URL验证和验证IP地址等。

答案 6 :(得分:0)

只需将preg_match与'i'修饰符

一起使用即可
echo eregi('[\w\.-_]+@[\w\.-_]+\.([a-z]{2,3})', $email) ? 'correct' : 'wrong';
echo preg_match('#[\w\.-_]+@[\w\.-_]+\.([a-z]{2,3})#i', $email) ? 'correct' : 'wrong';