-1

i was using ip geolocation service but it limited per day so now iam tring to make a local script that do same thing i will try with php function thats get country dialing code from hostname here is my example

<?php
$country = geoip_country_code_by_name($_SERVER['REMOTE_ADDR']);

then i found in github an json data thats contain all countrys data that i want but i have a problem

json data that i have like that

[
    {
        "code": "AD",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1E9",
        "name": "Andorra",
        "title": "flag for Andorra",
        "dialCode": "+376"
    },
    {
        "code": "AE",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1EA",
        "name": "United Arab Emirates",
        "title": "flag for United Arab Emirates",
        "dialCode": "+971"
    },
    {
        "code": "AF",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1EB",
        "name": "Afghanistan",
        "title": "flag for Afghanistan",
        "dialCode": "+93"
    },
    {
        "code": "AG",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1EC",
        "name": "Antigua and Barbuda",
        "title": "flag for Antigua and Barbuda",
        "dialCode": "+1268"
    },
    {
        "code": "AI",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1EE",
        "name": "Anguilla",
        "title": "flag for Anguilla",
        "dialCode": "+1 264"
    },
    {
        "code": "AL",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1F1",
        "name": "Albania",
        "title": "flag for Albania",
        "dialCode": "+355"
    },
    {
        "code": "AM",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1F2",
        "name": "Armenia",
        "title": "flag for Armenia",
        "dialCode": "+374"
    },
    {
        "code": "AO",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1F4",
        "name": "Angola",
        "title": "flag for Angola",
        "dialCode": "+244"
    },
    {
        "code": "AQ",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1F6",
        "name": "Antarctica",
        "title": "flag for Antarctica",
        "dialCode": null
    },
    {
        "code": "AR",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1F7",
        "name": "Argentina",
        "title": "flag for Argentina",
        "dialCode": "+54"
    }
]

so i want when i tell php to get me info about example : AO it return me the dialCode , name and emoji

can any one help me to do that in php

i do not have idea to make that i want

and iam so sorry for my bad language because iam from arabian country

THNX

2 Answers2

1

Another approach is to create your own array and then just request your $code:

<?php
$json = '[
    {
        "code": "AD",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1E9",
        "name": "Andorra",
        "title": "flag for Andorra",
        "dialCode": "+376"
    },
    {
        "code": "AE",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1EA",
        "name": "United Arab Emirates",
        "title": "flag for United Arab Emirates",
        "dialCode": "+971"
    },
    {
        "code": "AF",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1EB",
        "name": "Afghanistan",
        "title": "flag for Afghanistan",
        "dialCode": "+93"
    },
    {
        "code": "AG",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1EC",
        "name": "Antigua and Barbuda",
        "title": "flag for Antigua and Barbuda",
        "dialCode": "+1268"
    },
    {
        "code": "AI",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1EE",
        "name": "Anguilla",
        "title": "flag for Anguilla",
        "dialCode": "+1 264"
    },
    {
        "code": "AL",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1F1",
        "name": "Albania",
        "title": "flag for Albania",
        "dialCode": "+355"
    },
    {
        "code": "AM",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1F2",
        "name": "Armenia",
        "title": "flag for Armenia",
        "dialCode": "+374"
    },
    {
        "code": "AO",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1F4",
        "name": "Angola",
        "title": "flag for Angola",
        "dialCode": "+244"
    },
    {
        "code": "AQ",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1F6",
        "name": "Antarctica",
        "title": "flag for Antarctica",
        "dialCode": null
    },
    {
        "code": "AR",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1F7",
        "name": "Argentina",
        "title": "flag for Argentina",
        "dialCode": "+54"
    }
]';
$array = json_decode($json,true);
echo '<pre>';
foreach($array as $arry){
    $myArray[$arry['code']]['dialCode'] = $arry['dialCode'];
    $myArray[$arry['code']]['name'] = $arry['name'];
    $myArray[$arry['code']]['emoji'] = $arry['emoji'];
}
$code = 'AO';
print_r($myArray[$code]);

Returns :

Array
(
    [dialCode] => +244
    [name] => Angola
    [emoji] => 
)

Encoding should be utf-8.

Shlomtzion
  • 674
  • 5
  • 12
0

This is trivial, but here you go:

<?php

$data = <<<DATA
[
    {
        "code": "AD",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1E9",
        "name": "Andorra",
        "title": "flag for Andorra",
        "dialCode": "+376"
    },
    {
        "code": "AE",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1EA",
        "name": "United Arab Emirates",
        "title": "flag for United Arab Emirates",
        "dialCode": "+971"
    },
    {
        "code": "AF",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1EB",
        "name": "Afghanistan",
        "title": "flag for Afghanistan",
        "dialCode": "+93"
    },
    {
        "code": "AG",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1EC",
        "name": "Antigua and Barbuda",
        "title": "flag for Antigua and Barbuda",
        "dialCode": "+1268"
    },
    {
        "code": "AI",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1EE",
        "name": "Anguilla",
        "title": "flag for Anguilla",
        "dialCode": "+1 264"
    },
    {
        "code": "AL",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1F1",
        "name": "Albania",
        "title": "flag for Albania",
        "dialCode": "+355"
    },
    {
        "code": "AM",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1F2",
        "name": "Armenia",
        "title": "flag for Armenia",
        "dialCode": "+374"
    },
    {
        "code": "AO",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1F4",
        "name": "Angola",
        "title": "flag for Angola",
        "dialCode": "+244"
    },
    {
        "code": "AQ",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1F6",
        "name": "Antarctica",
        "title": "flag for Antarctica",
        "dialCode": null
    },
    {
        "code": "AR",
        "emoji": "",
        "unicode": "U+1F1E6 U+1F1F7",
        "name": "Argentina",
        "title": "flag for Argentina",
        "dialCode": "+54"
    }
]
DATA;



$code = "AR";


$data = json_decode($data);
foreach($data as $country) {
    if ($country->code == $code) {
        $emoji = $country->emoji;
        $dialCode = $country->dialCode;
        $name = $country->name;
        break;
    }
}
echo $name;
echo $emoji;
echo $dialCode;