С помощью API стороннего веб-приложения я получаю данные клиента, включая электронную почту, страну, номер телефона и так далее.
Давайте представим, что у меня есть клиент, который вставляет в это веб-приложение номер телефона неправильно . Я создал два типа проверки для исправления телефонного номера:
//phone prefix totally missing
if( substr($phone_number, 0, 1) != '+' ) {
if( substr($phone_number, 0, 2) == '00' ) {
$phone_number = '+'.substr($phone_number, 2);
} else {
$phone_number = $this->params['prefix'].$phone_number;
}
}
// double prefix prevention (since October 2019)
if (substr($phone_number, 0, 1) == '+' && substr($phone_number, 0, 3) == substr($phone_number, 3, 3)) {
$phone_number = substr($phone_number, 3);
} else if(substr($phone_number, 0, 1) == '+' && substr($phone_number, 0, 2) == substr($phone_number, 2, 2)) {
$phone_number = substr($phone_number, 2);
} else if(substr($phone_number, 0, 1) == '+' && substr($phone_number, 0, 4) == substr($phone_number, 4, 4)) {
$phone_number = substr($phone_number, 4);
}
В любом случае, есть проблема. Давайте представим, что клиент вводит следующий неправильный номер телефона: «39 3939xxxxxx», где первый «39» - это итальянский префикс без пропущенного + (поэтому номер телефона неверен).
В этом случае я полностью потерян, так как, если я уберу «39», то я бы также удалил половину числа;если вместо «39» добавить «+», я рискну получить что-то вроде «+ 39 + 39 + 39xxxxxx».
Основная проблема заключается в том, что я не знаю, включен ли префикс в число или нет, поэтому я застрял здесь, так как не знаю, какой тип управления реализует, не оставляя никакого запасаошибка.
РЕДАКТИРОВАТЬ: я заметил, что есть библиотека Google, чтобы помочь с этой проблемой, но в настоящее время я не могу интегрировать ее в свое веб-приложение.