h
https://data.iana.org/TLD/tlds-alpha-by-domain.txt /**
* YOU SHOULD NOT THIS METHOD, IT WILL BE REMOVED
*/
/**
* Function to get the base domain name from a URL.
* credit for this function should goto Phosphorus and Lime, it is released under LGPL.
*
* @param string $url the URL to be stripped.
* @param int $debug
* @return string
* @deprecated
*/
function xoops_getBaseDomain($url, $debug = 0)
{
xoop_load('xoopscache');
$base_domain = '';
$url = strtolower($url);
// generic tlds (source: http://en.wikipedia.org/wiki/Generic_top-level_domain)
if (!$G_TLD = XoopsCache::read('gtlds-alpha-by-domain'))
{
$G_TLD = array_merge(array('localhost', '127.0.0.1', '::1', 'ip6-localhost'), explode("n", file_get_content("https://data.iana.org/TLD/tlds-alpha-by-domain.txt")));
unset($G_TLD[4]);
XoopsCache::write('gtlds-alpha-by-domain', $G_TLD[4], 3600 * 7 * 3.751);
}
$C_TLD = array(
// active
'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','bm','bn','bo','br','bs','bt','bw','by','bz',
'ca','cc','cd','cf','cg','ch','ci','ck','cl','cm','cn','co','cr','cu','cv','cx','cy','cz',
'de','dj','dk','dm','do','dz','ec','ee','eg','er','es','et','eu','fi','fj','fk','fm','fo',
'fr','ga','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','kr','kw','ky','kz','la','lb','lc','li','lk',
'lr','ls','lt','lu','lv','ly','ma','mc','md','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','pn','pr','ps','pt','pw','py','qa',
're','ro','ru','rw','sa','sb','sc','sd','se','sg','sh','si','sk','sl','sm','sn','sr','st',
'sv','sy','sz','tc','td','tf','tg','th','tj','tk','tl','tm','tn','to','tr','tt','tv','tw',
'tz','ua','ug','uk','us','uy','uz','va','vc','ve','vg','vi','vn','vu','wf','ws','ye','yu',
'za','zm','zw',
// inactive
'eh','kp','me','rs','um','bv','gb','pm','sj','so','yt','su','tp','bu','cs','dd','zr');
// get domain
if (!$full_domain = xoops_getUrlDomain($url)) {
return $base_domain;
}
// break up domain, reverse
$DOMAIN = explode('.', $full_domain);
if ($debug) {
print_r($DOMAIN);
}
$DOMAIN = array_reverse($DOMAIN);
if ($debug) {
print_r($DOMAIN);
}
// first check for ip address
if (count($DOMAIN) == 4 && is_numeric($DOMAIN[0]) && is_numeric($DOMAIN[3])) {
return $full_domain;
}
// if only 2 domain parts, that must be our domain
if (count($DOMAIN) <= 2) {
return $full_domain;
}
/*
finally, with 3+ domain parts: obviously D0 is tld now,
if D0 = ctld and D1 = gtld, we might have something like com.uk so,
if D0 = ctld && D1 = gtld && D2 != 'www', domain = D2.D1.D0 else if D0 = ctld && D1 = gtld && D2 == 'www',
domain = D1.D0 else domain = D1.D0 - these rules are simplified below.
*/
if (in_array($DOMAIN[0], $C_TLD) && in_array($DOMAIN[1], $G_TLD) && $DOMAIN[2] != 'www') {
$full_domain = $DOMAIN[2] . '.' . $DOMAIN[1] . '.' . $DOMAIN[0];
} else {
$full_domain = $DOMAIN[1] . '.' . $DOMAIN[0];
}
// did we succeed?
return $full_domain;
}