У меня есть номер телефона, и его тип - varchar (32). Это могут быть 03004748495, 3004748495, 0300-4748495, 300-4748495, + 92-300-4748495 или 923004748495. Я хочу, чтобы он был преобразован в этом формате 923004748495 как целое число, если оно отсутствует в этом формате. Как я могу это достичь? Есть идеи?
Используйте 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;
Я предлагаю использовать 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);
}
-
в телефоне, я взрываюсь .. Но это было только для одного случая. Не универсальный.