Как получить код страны с мобильного телефона с помощью php

Я получаю номер мобильного телефона из базы данных в базе данных у меня более 1000 номеров мобильных телефонов, моя база данных выглядит так

   mobilenumber
   971525478965
   919844005522
   45712345678

я хочу просмотреть каждый номер в базе данных и найти countrycode с мобильного телефона отобразить countrycode и страна, использующая php

например вот так

 countrycode 971 country UAE
 countrycode 91 country India
 countrycode 45 country Denmark

у любого есть какие-либо предложения, пожалуйста, покажите мне, как это сделать.

Я пытался так, но хочу проверить более одного мобильного номера из базы данных

 <?php

$number = "971527139011";

    $countrys = array(

    '1' => 'us',
    '2' => 'uk',
    '3' => 'de',
    '44' => 'fi',
    '123' => 'no',
    '971' =>'uae',
    '91' =>'india',
    '92' =>'pakistan'
    );

    $i = 4;
    $country = "";
    while ($i > 0) {
        if (isset($countrys[substr($number, 0, $i)])) {
            $country = $countrys[substr($number, 0, $i)];
            break;
        } else {
            $i--;
        }
    }
    echo $country;


    ?>

отредактированный

   <?php


$dbHost = 'localhost'; // usually localhost
$dbUsername = 'root';
$dbPassword = '1234fedf';
$dbDatabase = 'smsmobile';
$db = mysql_connect($dbHost, $dbUsername, $dbPassword) or die ("Unable to connect to Database Server.");
mysql_select_db ($dbDatabase, $db) or die ("Could not select database.");

$sql = "SELECT destinationaddress FROM reporting";
//print $sql;

$queryRes1 = mysql_query($sql);

while($rows=mysql_fetch_assoc($queryRes1))
{
$destinationaddress[] = $rows['destinationaddress']; 

}



$phones = $destinationaddress;



// get your list of country codes
$ccodes = array(
    '1' => 'us',
    '2' => 'uk',
    '3' => 'de',
    '44' => 'fi',
    '123' => 'no',
    '971' =>'uae',
    '91' =>'india',
    '92' =>'pakistan'
);

krsort( $ccodes );

foreach( $phones as $pn )
{
    foreach( $ccodes as $key=>$value )
    {
        if ( substr( $pn, 0, strlen( $key ) ) == $key )
        {
            // match
            $country[$pn] = $value;
            break;
        }
    }
}

print_r( $country );    
    ?>

1 ответ

Решение

Примерно так будет работать:

// get your list of numbers from DB
$phones = array( '971527139011', '171527139011' );

// get your list of country codes
$ccodes = array(
    '1' => 'us',
    '2' => 'uk',
    '3' => 'de',
    '44' => 'fi',
    '123' => 'no',
    '971' =>'uae',
    '91' =>'india',
    '92' =>'pakistan'
);

krsort( $ccodes );

foreach( $phones as $pn )
{
    foreach( $ccodes as $key=>$value )
    {
        if ( substr( $pn, 0, strlen( $key ) ) == $key )
        {
            // match
            $country[$pn] = $value;
            break;
        }
    }
}

print_r( $country );

редактировать

Данные довольно грязные, я предлагаю вам хранить их в разных столбцах, но, если структура данных всегда одна и та же, это извлечет из нее страну / код:

$data = array( 'country : Denmark prefix:45', 'country : Pakistan prefix:92' );

foreach ( $data as $string )
{
    $_a = explode( ':', $string );
    $_b = explode( ' ', $_a[1] );
    $ccode[$_a[2]] = $_b[1];
}

print_r( $ccode );
Другие вопросы по тегам