Почему не работает моя проверка электронной почты? PHP - PullRequest
0 голосов
/ 14 декабря 2010

Я использовал

if (!preg_match('/[a-z||0-9]@[a-z||0-9].[a-z]/', $email)) {
    [PRINT ERROR]
}

&

if (!eregi( "^[0-9]+$", $email)) {
    [PRINT ERROR]
}

&

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    [PRINT ERROR]
}

Я также пытался вынуть! и заставить его работать в обратном направлении, но по какой-то причине НИКТО из этих работ не выясняет, является ли он действительным. Есть идеи почему? ... У меня есть это в выражении else if, я не уверен, может ли это быть причиной ..

Я использую PHP

Ответы [ 4 ]

1 голос
/ 14 декабря 2010

Попробуйте

'/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/'

...

if (!preg_match('/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/', strtoupper($email))) {
    [PRINT ERROR]
}

Насколько я вижу, ни одно из ваших выражений регулярных выражений не будет соответствовать электронной почте.

1 голос
/ 14 декабря 2010

Попробуйте это из исходного кода Kohana:

function email($email)
{
    return (bool) preg_match('/^[-_a-z0-9\'+*$^&%=~!?{}]++(?:\.[-_a-z0-9\'+*$^&%=~!?{}]+)*+@(?:(?![-.])[-a-z0-9.]+(?<![-.])\.[a-z]{2,6}|\d{1,3}(?:\.\d{1,3}){3})(?::\d++)?$/iD', (string) $email);
}
0 голосов
/ 14 декабря 2010

Попробуйте это (из WordPress):

// from wordpress code: wp-includes/formatting.php
function is_email($user_email)
{
    $chars = "/^([a-z0-9+_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,6}\$/i";

    if (strpos($user_email, '@') !== false && strpos($user_email, '.') !== false)
    {
        if (preg_match($chars, $user_email)) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}
0 голосов
/ 14 декабря 2010

Проверьте вашу версию php. eregi устарела после 5.3.0. Кроме того, регулярное выражение не является правильным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...