Eregi()弃用了php帮助?

时间:2010-08-22 17:31:38

标签: php deprecated

我收到错误:

Deprecated: Function eregi() is deprecated in C:\wamp\www\registration\class.register.php on line 75

使用我的代码::

if(empty($this->email) || !eregi('^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,4}$',$this->email))

我应该使用哪种替代方案以及如何实施它????

2 个答案:

答案 0 :(得分:3)

正如@Sarfraz所说,ereg_*函数已被弃用,您应该使用preg_*代替。但是在这种情况下,您根本不应该使用正则表达式。有一个名为filter_var()的功能,允许您验证一些流行的数据格式(电子邮件,URL等)。

if (empty($this->email) || false == filter_var($this->email, FILTER_VALIDATE_EMAIL)) {
    // Empty or not valid email
}

答案 1 :(得分:2)

ereg家庭功能have been deprecated,您需要使用preg家庭功能。在您的情况下,您应该使用preg_match代替。

这段代码相当于:

if(empty($this->email) || 
    !preg_match('~^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,4}$~i',
    $this->email))

它也可以压缩为:

if(empty($this->email) || !preg_match('~^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,4}$~i',
    $this->email))