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);