Files
CLOAK/lib/Cloak/CountryAllowlist.php
T

46 lines
1.1 KiB
PHP

<?php
/**
* SHOW_SITE_COUNTRY 允许列表解析与比对
*/
require_once __DIR__ . '/CountryCodeNormalizer.php';
class CountryAllowlist
{
/**
* @param string $config 逗号分隔国家码,如 US,GB,CA
* @return string[]
*/
public static function parse($config)
{
$config = strtoupper(trim((string) $config));
if ($config === '') {
return [];
}
$parts = preg_split('/\s*,\s*/', $config);
$out = [];
foreach ($parts as $part) {
$part = trim($part);
if ($part !== '') {
$out[] = $part;
}
}
return array_values(array_unique($out));
}
/**
* @param string|null $countryCode
* @param string[] $allowlist
*/
public static function isAllowed($countryCode, array $allowlist)
{
if ($allowlist === []) {
return true;
}
$normalized = CountryCodeNormalizer::toAlpha2($countryCode);
if ($normalized === null || $normalized === '') {
return false;
}
return in_array($normalized, $allowlist, true);
}
}