[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Определить номер телефона или email
RootPM
Имеется одно поле для ввода логина (номер телефона или email), подскажите как правильно сделать алгоритм чтобы определить с чем работаем:

email@.. (если имеется @)
922.. (если тип int из 10 символов)
8922.. (если тип int из 11 символов)
+7922.. (если первым стоит + и состоит из 12 символов)
Иначе ошибка

У меня всё работает, но может более правильно можно сделать?


_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
Игорь_Vasinsky
php = preg_match()
js = test()

нафига такое?

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
RootPM
Цитата (Игорь_Vasinsky @ 15.11.2016 - 14:38)
нафига такое?

Логин - раньше для регистрации использовали email, сейчас на номера перешли. У MAIL сейчас можно сгенерировать из существующего аккаунта не один ящик, на номерах надежнее и меньше спама.

_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
TranceIT
if ($data == "+" . (int)$data && in_array(strlen((int)$data), [10, 11])) {
echo 'phone';
} else {
echo 'email';
}


_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать.

Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!

user posted image
RootPM
TranceIT

Спасибо, потом ещё отрезать лишнее до 922... (для работы с DB), в таком варианте я понимаю проще отрезать последние 10 символов, в первом условии.

+ в карму

_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
TranceIT
Цитата (RootPM @ 15.11.2016 - 13:27)
Спасибо, потом ещё отрезать лишнее до 922... (для работы с DB), в таком варианте я понимаю проще отрезать последние 10 символов, в первом условии.

Тут уже сам смотри, что нужно. Но лучше хранить телефоны в одном формате в БД. Потом будет проще обрабатывать инфу.

_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать.

Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!

user posted image
RootPM
TranceIT

Про это и говорю, отрезать +7 или 8, как то так:

$num = substr($num, -9);  // последнии 10 символов


_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
Миша
Цитата (TranceIT @ 15.11.2016 - 15:17)
if ($data == "+" . (int)$data && in_array(strlen((int)$data), [10, 11])) {
    echo 'phone';
} else {
    echo 'email';
}

Обычно в таком формате пользователи вводят номер: 8-900-00-00-000

А этот вариант такой номер не пропустит, есть варианты?)

_____________
Принимаю заказы, писать в ЛС
walerus
RootPM
Цитата
Про это и говорю, отрезать +7 или 8, как то так:
А если номер Украина? +38 и т.д.
AllesKlar
Для мыла:
http://php.net/manual/ru/function.filter-var.php

_____________
[продано копирайтерам]
Миша
Этот вариант должен нормально отработать:

if(filter_var($data, FILTER_VALIDATE_EMAIL)) {
echo "Email";
} else {
$sban = array("-", "+", " ");
$res = str_replace($sban, "", $data);

if(in_array(strlen((int) $res), [10, 11]) ) {
$result = substr((int) $res, -10);

echo "Номер телефона РФ в формате 9001020123";
} else {
echo "Произошла ошибка, проверьте введённые данные";
}
}


_____________
Принимаю заказы, писать в ЛС
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.