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');
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');
// 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
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.