Полное руководство по преобразованию телефонных номеров в формат США в PHP

В этой статье блога мы рассмотрим различные методы преобразования телефонных номеров в формат номеров США с помощью PHP. Независимо от того, создаете ли вы систему управления контактами, телефонный справочник или любое приложение, работающее с телефонными номерами, это руководство предоставит вам несколько подходов к преобразованию. Итак, приступим!

Метод 1: регулярные выражения
Регулярные выражения — мощный инструмент сопоставления с образцом. Вы можете использовать их для идентификации телефонных номеров в различных форматах и ​​манипулирования ими. Вот пример использования регулярных выражений для преобразования номера телефона в американский формат:

function convertToUSFormat($phoneNumber) {
    // Remove any non-digit characters
    $phoneNumber = preg_replace('/\D/', '', $phoneNumber);
    // Add the US country code if missing
    if (strlen($phoneNumber) == 10) {
        $phoneNumber = '1' . $phoneNumber;
    }
// Format the number as (XXX) XXX-XXXX
    $phoneNumber = preg_replace('/^1?(\d{3})(\d{3})(\d{4})$/', '($1) $2-$3', $phoneNumber);
    return $phoneNumber;
}
// Example usage
$phoneNumber = '+1 (555) 123-4567';
$usFormatNumber = convertToUSFormat($phoneNumber);
echo $usFormatNumber; // Output: (555) 123-4567

Метод 2: манипуляции со строками
Иногда вам не захочется полагаться на регулярные выражения. В таких случаях вы можете использовать функции манипуляции со строками для преобразования номера телефона в формат США. Вот пример:

function convertToUSFormat($phoneNumber) {
    // Remove any non-digit characters
    $phoneNumber = preg_replace('/\D/', '', $phoneNumber);
    // Add the US country code if missing
    if (strlen($phoneNumber) == 10) {
        $phoneNumber = '1' . $phoneNumber;
    }
// Format the number as (XXX) XXX-XXXX
    $formattedNumber = '(' . substr($phoneNumber, 1, 3) . ') ' . substr($phoneNumber, 4, 3) . '-' . substr($phoneNumber, 7);
    return $formattedNumber;
}
// Example usage
$phoneNumber = '+1 (555) 123-4567';
$usFormatNumber = convertToUSFormat($phoneNumber);
echo $usFormatNumber; // Output: (555) 123-4567

Метод 3: использование библиотеки
Если вы предпочитаете более комплексное решение, вы можете использовать библиотеку PHP, специально разработанную для обработки телефонных номеров. Одной из популярных библиотек является libphonenumber, которая предоставляет обширные функциональные возможности для анализа, проверки и форматирования телефонных номеров. Вот пример:

require_once 'path/to/libphonenumber/vendor/autoload.php';
use libphonenumber\PhoneNumberUtil;
use libphonenumber\PhoneNumberFormat;
function convertToUSFormat($phoneNumber) {
    $phoneNumberUtil = PhoneNumberUtil::getInstance();
    $numberProto = $phoneNumberUtil->parse($phoneNumber, 'US');
    $formattedNumber = $phoneNumberUtil->format($numberProto, PhoneNumberFormat::NATIONAL);
    return $formattedNumber;
}
// Example usage
$phoneNumber = '+1 (555) 123-4567';
$usFormatNumber = convertToUSFormat($phoneNumber);
echo $usFormatNumber; // Output: (555) 123-4567

Преобразование телефонных номеров в формат номеров США является общим требованием в различных приложениях PHP. В этой статье мы рассмотрели три различных метода достижения этой цели. Вы можете выбрать подход, который лучше всего соответствует вашим потребностям, будь то использование регулярных выражений, манипуляций со строками или использование такой библиотеки, как «libphonenumber». Используя эти методы, вы можете быть уверены, что ваши телефонные номера имеют единый формат и готовы к использованию в ваших приложениях.