2013-05-25 3 views
1

Я абсолютно запутался с этим:preg_match проблемы с «[» в quadodo системе авторизации

$email = (isset($_POST['email']) && preg_match('@^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})[email protected]', $_POST['email']) && strlen($_POST['email']) <= 255 && strlen($_POST['email']) > 6) ? $_POST['email'] : false; 

Ошибка:

Warning: preg_match(): Unknown modifier '[' in C:\xampp\htdocs\sales\qls-3.1.9\install\Install.class.php on line 283 

и я смотрел на фактические функции веб-страницы с official php site

Если кто-то может помочь, это будет эпос!

+0

если у вас есть PHP> = 5.2, пожалуйста, используйте 'filter_var ($ _ POST [ 'электронная почта'], FILTER_VALIDATE_EMAIL)' – Class

ответ

1

Проблема заключается в том, что вы используете @ в качестве регулярных выражений разделителя и с помощью @ в регулярном выражении, не избежать этого.

Ваше регулярное выражение:

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

+1 для объяснения того, что эта проблема, даже если кто-то еще вниз вас. – BLaZuRE

+0

@BLaZuRE: Спасибо, не знаю, почему я получил голосую – anubhava

+0

Спасибо, человек, я был абсолютно в тупике, теперь я чувствую себя как дебил, хотя XD –

-1

хорошо попробовать это:

$email = (isset($_POST['email']) && preg_match('/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i', $_POST['email']) && strlen($_POST['email']) <= 255 && strlen($_POST['email']) > 6) ? $_POST['email'] : false; 
Смежные вопросы