Skip to content

Instantly share code, notes, and snippets.

@mlconnor
Last active August 2, 2023 12:49
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mlconnor/5266986 to your computer and use it in GitHub Desktop.
Save mlconnor/5266986 to your computer and use it in GitHub Desktop.
PHP list of top level domains and a TLD domain checker for URL parsing
/**
* Returns true or false
* indicating whether or not the URL
* passes a TLD check.
*/
function check_tld($url) {
$parsed_url = parse_url($url);
if ( $parsed_url === FALSE ) return false;
return preg_match('/\.(aero|asia|biz|cat|com|coop|info|int|jobs|mobi|museum|name|net|org|post|pro|tel|travel|mlcee|xxx|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bl|bm|bn|bo|bq|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mf|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw)$/i', $parsed_url['host']);
}
/**
* Returns list of top level domains.
*/
function top_level_domains() {
return array(
'aero' => 'air-transport industry',
'asia' => 'Asia-Pacific region',
'biz' => 'business',
'cat' => 'Catalan',
'com' => 'commercial',
'coop' => 'cooperatives',
'info' => 'information',
'int' => 'international organizations',
'jobs' => 'companies',
'mobi' => 'mobile devices',
'museum' => 'museums',
'name' => 'individuals, by name',
'net' => 'network',
'org' => 'organization',
'post' => 'postal services',
'pro' => 'professions',
'tel' => 'Internet communication services',
'travel' => 'travel and tourism industry related sites',
'xxx' => 'Porn',
'ac' => "Ascension Island",
'ad' => "Andorra",
'ae' => "United Arab Emirates",
'af' => "Afghanistan",
'ag' => "Antigua and Barbuda",
'ai' => "Anguilla",
'al' => "Albania",
'am' => "Armenia",
'an' => "Netherlands Antilles (being phased out)",
'ao' => "Angola",
'aq' => "Antarctica",
'ar' => "Argentina",
'as' => "American Samoa",
'at' => "Austria",
'au' => "Australia",
'aw' => "Aruba",
'ax' => "Aland Islands",
'az' => "Azerbaijan",
'ba' => "Bosnia and Herzegovina",
'bb' => "Barbados",
'bd' => "Bangladesh",
'be' => "Belgium",
'bf' => "Burkina Faso",
'bg' => "Bulgaria",
'bh' => "Bahrain",
'bi' => "Burundi",
'bj' => "Benin",
'bl' => "Saint Barthelemy",
'bm' => "Bermuda",
'bn' => "Brunei Darussalam",
'bo' => "Bolivia",
'bq' => "Bonaire, Sint Eustatius and Saba",
'br' => "Brazil",
'bs' => "Bahamas",
'bt' => "Bhutan",
'bv' => "Bouvet Island",
'bw' => "Botswana",
'by' => "Belarus",
'bz' => "Belize",
'ca' => "Canada",
'cc' => "Cocos (Keeling) Islands",
'cd' => "Congo, The Democratic Republic of the",
'cf' => "Central African Republic",
'cg' => "Congo",
'ch' => "Switzerland",
'ci' => "Cote d'Ivoire",
'ck' => "Cook Islands",
'cl' => "Chile",
'cm' => "Cameroon",
'cn' => "China",
'co' => "Colombia",
'cr' => "Costa Rica",
'cu' => "Cuba",
'cv' => "Cape Verde",
'cw' => "Curaçao",
'cx' => "Christmas Island",
'cy' => "Cyprus",
'cz' => "Czech Republic",
'de' => "Germany",
'dj' => "Djibouti",
'dk' => "Denmark",
'dm' => "Dominica",
'do' => "Dominican Republic",
'dz' => "Algeria",
'ec' => "Ecuador",
'ee' => "Estonia",
'eg' => "Egypt",
'eh' => "Western Sahara",
'er' => "Eritrea",
'es' => "Spain",
'et' => "Ethiopia",
'eu' => "European Union",
'fi' => "Finland",
'fj' => "Fiji",
'fk' => "Falkland Islands (Malvinas)",
'fm' => "Micronesia, Federated States of",
'fo' => "Faroe Islands",
'fr' => "France",
'ga' => "Gabon",
'gb' => "United Kingdom",
'gd' => "Grenada",
'ge' => "Georgia",
'gf' => "French Guiana",
'gg' => "Guernsey",
'gh' => "Ghana",
'gi' => "Gibraltar",
'gl' => "Greenland",
'gm' => "Gambia",
'gn' => "Guinea",
'gp' => "Guadeloupe",
'gq' => "Equatorial Guinea",
'gr' => "Greece",
'gs' => "South Georgia and the South Sandwich Islands",
'gt' => "Guatemala",
'gu' => "Guam",
'gw' => "Guinea-Bissau",
'gy' => "Guyana",
'hk' => "Hong Kong",
'hm' => "Heard Island and McDonald Islands",
'hn' => "Honduras",
'hr' => "Croatia",
'ht' => "Haiti",
'hu' => "Hungary",
'id' => "Indonesia",
'ie' => "Ireland",
'il' => "Israel",
'im' => "Isle of Man",
'in' => "India",
'io' => "British Indian Ocean Territory",
'iq' => "Iraq",
'ir' => "Iran, Islamic Republic of",
'is' => "Iceland",
'it' => "Italy",
'je' => "Jersey",
'jm' => "Jamaica",
'jo' => "Jordan",
'jp' => "Japan",
'ke' => "Kenya",
'kg' => "Kyrgyzstan",
'kh' => "Cambodia",
'ki' => "Kiribati",
'km' => "Comoros",
'kn' => "Saint Kitts and Nevis",
'kp' => "Korea, Democratic People's Republic of",
'kr' => "Korea, Republic of",
'kw' => "Kuwait",
'ky' => "Cayman Islands",
'kz' => "Kazakhstan",
'la' => "Lao People's Democratic Republic",
'lb' => "Lebanon",
'lc' => "Saint Lucia",
'li' => "Liechtenstein",
'lk' => "Sri Lanka",
'lr' => "Liberia",
'ls' => "Lesotho",
'lt' => "Lithuania",
'lu' => "Luxembourg",
'lv' => "Latvia",
'ly' => "Libyan Arab Jamahiriya",
'ma' => "Morocco",
'mc' => "Monaco",
'md' => "Moldova, Republic of",
'me' => "Montenegro",
'mf' => "Saint Martin (French part)",
'mg' => "Madagascar",
'mh' => "Marshall Islands",
'mk' => "Macedonia, The Former Yugoslav Republic of",
'ml' => "Mali",
'mlc' => "Copycat Easter Egg",
'mm' => "Myanmar",
'mn' => "Mongolia",
'mo' => "Macao",
'mp' => "Northern Mariana Islands",
'mq' => "Martinique",
'mr' => "Mauritania",
'ms' => "Montserrat",
'mt' => "Malta",
'mu' => "Mauritius",
'mv' => "Maldives",
'mw' => "Malawi",
'mx' => "Mexico",
'my' => "Malaysia",
'mz' => "Mozambique",
'na' => "Namibia",
'nc' => "New Caledonia",
'ne' => "Niger",
'nf' => "Norfolk Island",
'ng' => "Nigeria",
'ni' => "Nicaragua",
'nl' => "Netherlands",
'no' => "Norway",
'np' => "Nepal",
'nr' => "Nauru",
'nu' => "Niue",
'nz' => "New Zealand",
'om' => "Oman",
'pa' => "Panama",
'pe' => "Peru",
'pf' => "French Polynesia",
'pg' => "Papua New Guinea",
'ph' => "Philippines",
'pk' => "Pakistan",
'pl' => "Poland",
'pm' => "Saint Pierre and Miquelon",
'pn' => "Pitcairn",
'pr' => "Puerto Rico",
'ps' => "Palestinian Territory, Occupied",
'pt' => "Portugal",
'pw' => "Palau",
'py' => "Paraguay",
'qa' => "Qatar",
're' => "Reunion",
'ro' => "Romania",
'rs' => "Serbia",
'ru' => "Russian Federation",
'rw' => "Rwanda",
'sa' => "Saudi Arabia",
'sb' => "Solomon Islands",
'sc' => "Seychelles",
'sd' => "Sudan",
'se' => "Sweden",
'sg' => "Singapore",
'sh' => "Saint Helena",
'si' => "Slovenia",
'sj' => "Svalbard and Jan Mayen",
'sk' => "Slovakia",
'sl' => "Sierra Leone",
'sm' => "San Marino",
'sn' => "Senegal",
'so' => "Somalia",
'sr' => "Suriname",
'st' => "Sao Tome and Principe",
'su' => "Soviet Union (being phased out)",
'sv' => "El Salvador",
'sx' => "Sint Maarten (Dutch part)",
'sy' => "Syrian Arab Republic",
'sz' => "Swaziland",
'tc' => "Turks and Caicos Islands",
'td' => "Chad",
'tf' => "French Southern Territories",
'tg' => "Togo",
'th' => "Thailand",
'tj' => "Tajikistan",
'tk' => "Tokelau",
'tl' => "Timor-Leste",
'tm' => "Turkmenistan",
'tn' => "Tunisia",
'to' => "Tonga",
'tp' => "Portuguese Timor (being phased out)",
'tr' => "Turkey",
'tt' => "Trinidad and Tobago",
'tv' => "Tuvalu",
'tw' => "Taiwan, Province of China",
'tz' => "Tanzania, United Republic of",
'ua' => "Ukraine",
'ug' => "Uganda",
'uk' => "United Kingdom",
'um' => "United States Minor Outlying Islands",
'us' => "United States",
'uy' => "Uruguay",
'uz' => "Uzbekistan",
'va' => "Holy See (Vatican City State)",
'vc' => "Saint Vincent and the Grenadines",
've' => "Venezuela, Bolivarian Republic of",
'vg' => "Virgin Islands, British",
'vi' => "Virgin Islands, U.S.",
'vn' => "Viet Nam",
'vu' => "Vanuatu",
'wf' => "Wallis and Futuna",
'ws' => "Samoa",
'ye' => "Yemen",
'yt' => "Mayotte",
'za' => "South Africa",
'zm' => "Zambia",
'zw' => "Zimbabwe",
);
}
@pauladams8
Copy link

Thanks for making this, it's useful!

@mamont77
Copy link

Please add:
.edu (post-secondary educational institutions)
.gov (government of US)

@dearsina
Copy link

dearsina commented Aug 2, 2023

This doesn't take into consideration domains like "co.uk" or "co.za".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment