Форматирование номера телефона PHP - PullRequest
1 голос
/ 08 октября 2019

С помощью 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, чтобы помочь с этой проблемой, но в настоящее время я не могу интегрировать ее в свое веб-приложение.

1 Ответ

0 голосов
/ 08 октября 2019

Использовать libphonenumber-for-php библиотека, перейдите по этой ссылке https://github.com/giggsey/libphonenumber-for-php

...