Eregi () Устаревшая помощь php? - PullRequest
2 голосов
/ 22 августа 2010

Я получаю сообщение об ошибке:

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 ]

3 голосов
/ 22 августа 2010

Как сказал @Sarfraz, ereg_* функции устарели, и вместо них следует использовать preg_*.Однако в этом случае вы не должны использовать регулярные выражения вообще.Существует функция под названием filter_var(), которая позволяет проверять некоторые популярные форматы данных (электронные письма, URL-адреса и т. Д.)

if (empty($this->email) || false == filter_var($this->email, FILTER_VALIDATE_EMAIL)) {
    // Empty or not valid email
}
2 голосов
/ 22 августа 2010

Да ereg семейные функции устарели , вам нужно использовать 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))
...