2009-11-16 68 views
0

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

我应该使用它还是在那里可以使用另一个功能?

+0

非常感谢所有他的答案,但我想第一部分保持仍然无人应答......如果事情做工精细与特定的载体作用..为什么人觉得有必要贬低其他it..or西隧的问题可能已经被窃听,使他们做到这一点.. – Sachindra 2009-11-16 10:38:38

+0

@ sachindra149,看到我的答案的家伙。 – 2009-11-16 10:47:22

+0

谢谢你的答案... – Sachindra 2009-11-16 11:01:52

回答

5

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

查看the preg* functions基于PCRE(Perl兼容正则表达式)的替代方案(preg_matchpreg_match_all是需要电子邮件验证的功能)。 eregi *函数是基于posix的正则表达式,所以PCRE的语法略有不同,但它不是一个重大变化。

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

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

不应使用不推荐使用的函数;这是因为,尽管它们在当前版本的解释器中正常工作,但它们可能(并且将会)从未来的版本中完全移除。所以如果你在旧项目中使用它们,你可能会留下它们(但是当你迁移到一个新的php版本时你的项目可能会中断)。

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

0

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

0

如果希望脚本向前兼容,则不应使用弃用的函数。他们现在工作,但未来可能无法工作。或者,更糟糕的是,他们提出了一个严重的错误,这个错误不能被固定地修复,但是需要修改一个更大的变化,而修复单个函数是无法解决的。

在你的情况,eregi将被从PHP 6中删除,你的脚本将会失败。改为使用preg_match()preg_match_all()

5

eregeregi已弃用,因为它们不适用于Unicode。

在回答问题"Why is ereg being deprecated?"Rasmus Lerdorf是这样说的:

真正的答案是,有没有 Unicode支持在额日格功能, 和喜欢还是不喜欢,这个世界是怎么回事 Unicode。

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

0

正如其他人所说,你不应该使用过时的功能,并在预浸料的功能看,而不是。

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

0

只要使用preg_match以“我”修饰

echo eregi('[\w\.-_][email protected][\w\.-_]+\.([a-z]{2,3})', $email) ? 'correct' : 'wrong'; 
echo preg_match('#[\w\.-_][email protected][\w\.-_]+\.([a-z]{2,3})#i', $email) ? 'correct' : 'wrong';