RootPM
15.11.2016 - 13:35
Имеется одно поле для ввода логина (номер телефона или email), подскажите как правильно сделать алгоритм чтобы определить с чем работаем:
email@.. (если имеется @)
922.. (если тип int из 10 символов)
8922.. (если тип int из 11 символов)
+7922.. (если первым стоит + и состоит из 12 символов)
Иначе ошибка
У меня всё работает, но может более правильно можно сделать?
_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
Игорь_Vasinsky
15.11.2016 - 14:38
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
15.11.2016 - 14:56
Цитата (Игорь_Vasinsky @ 15.11.2016 - 14:38) |
нафига такое? |
Логин - раньше для регистрации использовали email, сейчас на номера перешли. У MAIL сейчас можно сгенерировать из существующего аккаунта не один ящик, на номерах надежнее и меньше спама.
_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
TranceIT
15.11.2016 - 15:17
if ($data == "+" . (int)$data && in_array(strlen((int)$data), [10, 11])) {
echo 'phone';
} else {
echo 'email';
}
_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать. Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!
RootPM
15.11.2016 - 15:27
TranceIT
Спасибо, потом ещё отрезать лишнее до 922... (для работы с DB), в таком варианте я понимаю проще отрезать последние 10 символов, в первом условии.
+ в карму
_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
TranceIT
15.11.2016 - 15:41
Цитата (RootPM @ 15.11.2016 - 13:27) |
Спасибо, потом ещё отрезать лишнее до 922... (для работы с DB), в таком варианте я понимаю проще отрезать последние 10 символов, в первом условии. |
Тут уже сам смотри, что нужно. Но лучше хранить телефоны в одном формате в БД. Потом будет проще обрабатывать инфу.
_____________
Безвозмездно помогаю только тем, кто сам пытается что-то сделать. Остальным за WMR
Даже если там 10 строк кода!
Даже если мне это ничего не стоит!
Даже если вы нуб!
RootPM
15.11.2016 - 16:01
TranceITПро это и говорю, отрезать +7 или 8, как то так:
$num = substr($num, -9);
_____________
Все будет офигенно. Кому-то сразу, кому-то постепенно.
Цитата (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
29.12.2016 - 00:24
RootPM
Цитата |
Про это и говорю, отрезать +7 или 8, как то так: |
А если номер Украина? +38 и т.д.
AllesKlar
29.12.2016 - 01:02
Этот вариант должен нормально отработать:
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 "Произошла ошибка, проверьте введённые данные";
}
}
_____________
Принимаю заказы, писать в ЛС
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.