PHP и регулярные выражения, почему это не работает? - PullRequest
0 голосов
/ 28 августа 2010
if(strlen($_REQUEST['email']) >= 0 && preg_match('^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$', $_REQUEST['email']))
{
    $error = true;
    echo "Please enter a valid Email address";
}

Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in /var/www/team2648/OPIS/register.php on line 30

Ответы [ 3 ]

4 голосов
/ 28 августа 2010

Вы забыли разделители . Добавьте их.

Также обратите внимание, что вы regex игнорирует некоторые совершенно допустимые адреса (например, foo@example.museum)

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

preg_match требует открытия и закрытия разделителей, таких как perl.Вы хотите включить, скажем, косую черту в начале и конце строки регулярного выражения, например

'/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'
1 голос
/ 28 августа 2010

PHP поставляется со встроенной функцией для проверки некоторых популярных данных, таких как URL-адреса, электронные письма и т. Д. - он называется filter_var().

if ($_REQUEST['email'] && filter_var($_REQUEST['email'], FILTER_VALIDATE_EMAIL)) {
    // This makes your code much cleaner!
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...