Я хочу преобразовать номер телефона в определенный формат, если он не в этом формате

1

У меня есть номер телефона, и его тип - varchar (32). Это могут быть 03004748495, 3004748495, 0300-4748495, 300-4748495, + 92-300-4748495 или 923004748495. Я хочу, чтобы он был преобразован в этом формате 923004748495 как целое число, если оно отсутствует в этом формате. Как я могу это достичь? Есть идеи?

  • 0
    Покажите нам, что вы пытались
  • 0
    Я пробовал разные вещи, но они не были общими. Я хочу универсальную функцию для решения всех этих проблем. Я имею в виду , если бы я - в телефоне, я взрываюсь .. Но это было только для одного случая. Не универсальный.
Показать ещё 5 комментариев
Теги:

2 ответа

1
Лучший ответ

Используйте preg_replace для удаления нежелательных знаков (http://php.net/manual/en/function.preg-replace.php).

<?php

$number = '+92-300-4748495';

$number = preg_replace('/[^0-9]/', '', $number);

echo $number;

Если вы также хотите удалить rtrim ноль, вы можете использовать rtrim (http://php.net/manual/en/function.ltrim.php)

<?php

$number = '0300-4748495';

$number = preg_replace('/[^0-9]/', '', $number);

$number = ltrim($number, '0');

echo $number;

Дополнительный запрос "Если 92 не добавлен в начале, добавьте 92".

<?php
$number = '123456';

if (substr($number, 0, 2) != '92') {
    $number = '92' . $number;
}

echo $number;
  • 0
    Если 92 не добавляется в начале, добавьте также 92.
  • 0
    Спасибо. Это сработало.
3

Я предлагаю использовать liphonenumber-for-php

Пример кода с страницы github:

$swissNumberStr = "044 668 18 00";

// First call the class
$phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance();
try {

    // turn it into a object using a given geo code
    $swissNumberProto = $phoneUtil->parse($swissNumberStr, "CH"); 

    // validate the phonenumber
    $isValid = $phoneUtil->isValidNumber($swissNumberProto);

    if($isValid){

        // Produces "+41446681800"
        echo $result_number = $phoneUtil->format($swissNumberProto, \libphonenumber\PhoneNumberFormat::E164);
         // Produces "044 668 18 00"
        echo $result_number = $phoneUtil->format($swissNumberProto, \libphonenumber\PhoneNumberFormat::NATIONAL);
        // Produces "+41 44 668 18 00"
        echo $result_number = $phoneUtil->format($swissNumberProto, \libphonenumber\PhoneNumberFormat::INTERNATIONAL);
    }

} catch (\libphonenumber\NumberParseException $e) {
    var_dump($e);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню