function gethostnamefromurl($url)
{
preg_match('@^(?:http://)?([^/]+)@i',
$url, $matches);
$host = $matches[1];
return $host;
}
function validateDomainTLD($host)
{
$url = strtolower($host);
// information used to determine wether or not country codes used mandatory
// second level domains was gleaned by viewing the following wikipedia list
// http://en.wikipedia.org/wiki/Country_code_top-level_domain
$slds = '\.[a-z]{2,3}\.zw$|\.[a-z]{2,4}\.za$|\.[a-z]{2,3}\.yu$|\.[a-z]{3,3}\.ye$|\.[a-z]{2,3}\.vi$|\.[a-z]{2,3}\.ve$|\.[a-z]{2,3}\.uz$|\.[a-z]{3,3}\.uy$|\.[a-z]{2,4}\.us$|\.[a-z]{2,3}\.uk$|\.[a-z]{2,2}\.ug$|\.[a-z]{2,3}\.ua$|\.[a-z]{2,2}\.tz$|\.[a-z]{2,4}\.tw$|\.[a-z]{2,4}\.tt$|\.[a-z]{2,4}\.tr$|\.[a-z]{3,4}\.tn$|\.[a-z]{2,4}\.tm$|\.[a-z]{2,3}\.tl$|\.[a-z]{2,4}\.tj$|\.[a-z]{2,3}\.th$|\.[a-z]{2,3}\.tf$|\.[a-z]{3,3}\.sy$|\.[a-z]{3,3}\.sv$|\.[a-z]{3,3}\.st$|\.[a-z]{3,3}\.sg$|\.[a-z]{2,3}\.se$|\.[a-z]{2,4}\.sd$|\.[a-z]{3,3}\.sc$|\.[a-z]{3,3}\.sb$|\.[a-z]{3,3}\.sa$|\.[a-z]{2,3}\.rw$|\.[a-z]{2,3}\.ru$|\.[a-z]{3,4}\.re$|\.[a-z]{3,3}\.py$|\.[a-z]*?\.pw$|\.[a-z]{3,4}\.pt$|\.[a-z]{2,4}\.pr$|\.[a-z]{3,4}\.pl$|\.[a-z]{3,3}\.pk$|\.[a-z]{2,3}\.pg$|\.[a-z]{3,3}\.pe$|\.[a-z]{2,3}\.pa$|\.[a-z]{2,3}\.om$|\.[a-z]{2,4}\.nz$|\.[a-z]{2,4}\.nr$|\.[a-z]{3,3}\.np$|\.[a-z]{2,3}\.ni$|\.[a-z]{3,3}\.ng$|\.[a-z]{3,4}\.nf$|\.[a-z]{2,3}\.na$|\.[a-z]{2,3}\.mz$|\.[a-z]{3,4}\.my$|\.[a-z]{3,3}\.mx$|\.[a-z]{2,4}\.mw$|\.[a-z]{3,4}\.mv$|\.[a-z]{2,3}\.mu$|\.[a-z]{3,3}\.mt$|\.[a-z]{3,3}\.mp$|\.[a-z]{3,3}\.mo$|\.[a-z]{3,3}\.mn$|\.[a-z]{3,3}\.mm$|\.[a-z]{3,3}\.ml$|\.[a-z]{2,3}\.mg$|\.[a-z]{2,3}\.ma$|\.[a-z]{2,3}\.ly$|\.[a-z]{2,4}\.lv$|\.[a-z]{3,3}\.lr$|\.[a-z]{3,3}\.lk$|\.[a-z]{3,3}\.lb$|\.[a-z]{3,3}\.kz$|\.[a-z]{3,3}\.ky$|\.[a-z]{3,3}\.kw$|\.[a-z]{2,2}\.kr$|\.[a-z]{3,3}\.kn$|\.[a-z]{3,4}\.ki$|\.[a-z]{3,3}\.kh$|\.[a-z]{2,2}\.ke$|\.[a-z]{2,2}\.jp$|\.[a-z]{3,4}\.jo$|\.[a-z]{3,3}\.jm$|\.[a-z]{2,3}\.in$|\.[a-z]{2,3}\.il$|\.[a-z]{2,3}\.id$|\.[a-z]{2,3}\.hu$|\.[a-z]{2,4}\.hr$|\.[a-z]{3,3}\.hk$|\.[a-z]{2,4}\.gu$|\.[a-z]{3,3}\.gt$|\.[a-z]{3,3}\.gp$|\.[a-z]{3,3}\.gn$|\.[a-z]{3,3}\.gh$|\.[a-z]{2,3}\.gg$|\.[a-z]{2,4}\.fr$|\.[a-z]{2,3}\.fk$|\.[a-z]{3,3}\.es$|\.[a-z]{3,3}\.eg$|\.[a-z]{3,3}\.ec$|\.[a-z]{3,3}\.dz$|\.[a-z]{3,3}\.do$|\.[a-z]{3,3}\.dm$|\.[a-z]{2,3}\.cy$|\.[a-z]{2,2}\.cr$|\.[a-z]{2,3}\.cn$|\.[a-z]{2,4}\.ck$|\.[a-z]{3,3}\.cd$|\.[a-z]{2,2}\.ca$|\.[a-z]{2,4}\.bw$|\.[a-z]{2,4}\.br$|\.[a-z]{2,3}\.bo$|\.[a-z]{3,4}\.bj$|\.[a-z]{1,1}\.bg$|\.[a-z]{2,4}\.bd$|\.[a-z]{3,3}\.bb$|\.[a-z]{2,3}\.ba$|\.[a-z]{2,4}\.az$|\.[a-z]{3,3}\.aw$|\.[a-z]{2,3}\.au$|\.[a-z]{2,4}\.at$|\.[a-z]{3,3}\.ar$|\.[a-z]{2,2}\.ao$|\.[a-z]{3,3}\.am$|\.[a-z]{3,3}\.al$|\.[a-z]{3,3}\.ai$|\.[a-z]{2,3}\.ag$|\.[a-z]{3,3}\.af$|\.[a-z]{2,3}\.ae$';
$tlds = '\.aero$|\.asia$|\.biz$|\.cat$|\.com$|\.coop$|\.gov$|\.edu$|\.info$|\.int$|\.jobs$|\.mil$|\.mobi$|\.museum$|\.name$|\.net$|\.org$|\.pro$|\.tel$|\.travel$';
if (preg_match("/$slds$/", $host, $matches))
{
preg_match ("/[^\.\/]+\.[^\.\/]+\.[^\.\/]+$/",$host, $matches);
}
else
{
if (preg_match("/$tlds$/", $host, $matches))
{
preg_match ("/[^\.]+\.[^\.]+$/",$host, $matches);
}
else
{
return false;
}
}
return "{$matches[0]}";
}
$hostname = gethostnamefromurl(________);
$tld = validateDomainTLD($hostname);