PHP code example of yaovicoder / intl-region

1. Go to this page and download the library: Download yaovicoder/intl-region library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

yaovicoder / intl-region example snippets




use Ydee\IntlRegion\RegionProvider;

// Create provider instance
$provider = new RegionProvider();

// Get all available countries (196 sovereign countries)
$allCountries = $provider->getAvailableCountryCodes();

// Get European countries using ISO code
$europeanCountries = $provider->getCountriesByContinent('EUR');

// Get African countries in French
$africanCountries = $provider->getCountriesByContinent('AFR', 'fr');

// Get Asian countries using UN M49 code
$asianCountries = $provider->getCountriesByContinent('142');



return [
    // ... other bundles
    Ydee\IntlRegion\IntlRegionBundle::class => ['all' => true],
];



namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Ydee\IntlRegion\RegionProvider;

#[Route('/api/regions')]
class RegionController extends AbstractController
{
    private RegionProvider $regionProvider;

    public function __construct(RegionProvider $regionProvider)
    {
        $this->regionProvider = $regionProvider;
    }

    #[Route('/countries', name: 'app_regions_countries', methods: ['GET'])]
    public function getAllCountries(): JsonResponse
    {
        $countryCodes = $this->regionProvider->getAvailableCountryCodes();
        $countries = [];
        
        foreach ($countryCodes as $code) {
            $countries[$code] = \Locale::getDisplayRegion('-' . $code, 'en');
        }
        
        return $this->json([
            'success' => true,
            'data' => $countries,
            'count' => count($countries)
        ]);
    }

    #[Route('/countries/europe', name: 'app_regions_european_countries', methods: ['GET'])]
    public function getEuropeanCountries(): JsonResponse
    {
        $europeanCountries = $this->regionProvider->getCountriesByContinent('EUR');
        
        return $this->json([
            'success' => true,
            'data' => $europeanCountries,
            'count' => count($europeanCountries)
        ]);
    }

    #[Route('/countries/america/french', name: 'app_regions_american_countries_french', methods: ['GET'])]
    public function getAmericanCountriesInFrench(): JsonResponse
    {
        $americanCountries = $this->regionProvider->getCountriesByContinent('AMR', 'fr');
        
        return $this->json([
            'success' => true,
            'data' => $americanCountries,
            'count' => count($americanCountries)
        ]);
    }

    #[Route('/filter', name: 'app_regions_filter', methods: ['GET'])]
    public function getCountries(Request $request): JsonResponse
    {
        $continent = $request->query->get('continent'); // e.g. "EUR", "AFR"
        $lang = $request->query->get('lang', 'en'); // default language

        try {
            if ($continent) {
                $countries = $this->regionProvider->getCountriesByContinent($continent, $lang);
            } else {
                $countryCodes = $this->regionProvider->getAvailableCountryCodes();
                $countries = [];
                
                foreach ($countryCodes as $code) {
                    $countries[$code] = \Locale::getDisplayRegion('-' . $code, $lang);
                }
            }
        } catch (\InvalidArgumentException $e) {
            return $this->json([
                'success' => false,
                'error' => $e->getMessage(),
            ], JsonResponse::HTTP_BAD_REQUEST);
        }

        return $this->json([
            'success' => true,
            'data' => $countries,
            'count' => count($countries),
        ]);
    }
}

public function __construct(string $defaultLocale = 'en', ?LoggerInterface $logger = null)

public function getCountriesByContinent(string $continentCode, ?string $locale = null): array

// Get European countries in English
$europeanCountries = $provider->getCountriesByContinent('EUR');
// Returns: ['FR' => 'France', 'DE' => 'Germany', ...]

// Get African countries in French
$africanCountries = $provider->getCountriesByContinent('AFR', 'fr');
// Returns: ['DZ' => 'Algérie', 'EG' => 'Égypte', ...]

// Get Asian countries using UN M49 code
$asianCountries = $provider->getCountriesByContinent('142');
// Returns: ['CN' => 'China', 'JP' => 'Japan', ...]

public function getCountriesBySubregion(string $subregionCode, ?string $locale = null): array

// Get Western European countries
$westernEurope = $provider->getCountriesBySubregion('155');

// Get Eastern African countries
$easternAfrica = $provider->getCountriesBySubregion('014');

public function getAvailableCountryCodes(): array

$allCountries = $provider->getAvailableCountryCodes();
// Returns: ['DZ', 'AO', 'BJ', 'BW', ...] (196 countries)

public function hasCountryCode(string $countryCode): bool

if ($provider->hasCountryCode('FR')) {
    echo "France is a sovereign country";
}

public function getContinentCode(string $countryCode, bool $asIsoCode = false): ?string

$continentCode = $provider->getContinentCode('FR'); // Returns: '150'
$isoCode = $provider->getContinentCode('FR', true); // Returns: 'EUR'

// Convert UN M49 to ISO codes
$isoCode = $provider->getIsoContinentCode('150'); // Returns: 'EUR'
$isoCode = $provider->getIsoSubregionCode('155'); // Returns: 'WEU'

// Convert ISO to UN M49 codes
$m49Code = $provider->getM49ContinentCode('EUR'); // Returns: '150'
$m49Code = $provider->getM49SubregionCode('WEU'); // Returns: '155'

// Get all available continent codes
$continentCodes = $provider->getAvailableContinentCodes(); // UN M49 codes
$isoContinentCodes = $provider->getAvailableContinentCodes(true); // ISO codes

// Get all available subregion codes
$subregionCodes = $provider->getAvailableSubregionCodes(); // UN M49 codes
$isoSubregionCodes = $provider->getAvailableSubregionCodes(true); // ISO codes

use Psr\Log\LoggerInterface;

// Create provider with custom logger
use Psr\Log\NullLogger;

// Create provider with custom logger
$logger = new NullLogger();
$provider = new RegionProvider('en', $logger);

// Missing translations are logged and fallback to English or country code
$countries = $provider->getCountriesByContinent('EUR', 'xx');
// Logs warning for missing translations, falls back gracefully
bash
# Download and validate against UN data
php scripts/download-un-m49-data.php
vendor/bin/phpunit tests/UNM49DataValidationTest.php