为什么PHP中的某些函数(例如eregi
)已弃用?我通常使用eregi
进行电子邮件验证。
我应该使用它,还是可以使用其他功能?
答案 0 :(得分:5)
如上所述,您不应该使用eregi或任何其他已弃用的函数,因为它们已在下一版本的PHP中删除。
查看基于PCRE(Perl兼容正则表达式)备选方案的the preg* functions(preg_match和preg_match_all是电子邮件验证所需的功能)。 eregi *函数是基于posix的正则表达式,因此PCRE的语法略有不同,但并不是一个重大变化。
为什么函数会被弃用? Wikipedia建议:
答案 1 :(得分:5)
ereg
和eregi
已被弃用,因为它们不支持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';