All pastes #825468 Raw Edit

Something

public text v1 · immutable
#825468 ·published 2007-12-20 16:31 UTC
rendered paste body
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);