Как заменить eregi () - PullRequest
       5

Как заменить eregi ()

1 голос
/ 09 февраля 2012

Я попытался осмотреться и подумал, что понял это с помощью preg_match, но preg match выдает ошибку:

Предупреждение: preg_match (): без конечного разделителя '^'

вот мой оригинальный код, который, как говорит php, устарел:

if(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $_POST['email'])) { 
    $erroR= "Invalid Email address"; 
} 

Может кто-нибудь объяснить, что такое конечный разделитель '^' и как его добавить. спасибо @

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Поменяйте местами eregi() с preg_match() и добавьте разделители к регулярному выражению. Я выбрал стандарт / здесь, но вы можете использовать другие символы.

if(!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/", $_POST['email'])) { 
    $erroR= "Invalid Email address"; 
} 

Причина, по которой вы получаете это предупреждение ...

Предупреждение: preg_match(): без конечного разделителя '^'

... потому что preg_match() ожидает разделители, и предполагалось, что используется ^, и он не может соответствовать конечному.

1 голос
/ 09 февраля 2012

Добавьте / до и после выражения - вам нужен разделитель для preg_replace, чтобы указать, где начинается и заканчивается регулярное выражение Это может быть:

A delimiter can be any non-alphanumeric, non-backslash, non-whitespace character.
Often used delimiters are forward slashes (/), hash signs (#) and tildes (~).

Так что это будет работать:

"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/"
...