There is relatively easy way in PHP how to get the full URL of your actual page. But what to do if you need just a 2nd level domain name? Okay, let's see how to!
1) Get the full URL
if(isset($_SERVER['HTTPS'])) $protocol = 'https'; else $protocol = 'http'; $url = $protocol.'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];Now when we have the full URL. We can call this function with the URL parameter.
2) Function which returns 2nd level domain name
function get2ndLvlDomainName($url) { // a list of decimal-separated TLDs static $doubleTlds = [ 'co.uk', 'me.uk', 'net.uk', 'org.uk', 'sch.uk', 'ac.uk', 'gov.uk', 'nhs.uk', 'police.uk', 'mod.uk', 'asn.au', 'com.au', 'net.au', 'id.au', 'org.au', 'edu.au', 'gov.au', 'csiro.au', 'br.com', 'com.cn', 'com.tw', 'cn.com', 'de.com', 'eu.com', 'hu.com', 'idv.tw', 'net.cn', 'no.com', 'org.cn', 'org.tw', 'qc.com', 'ru.com', 'sa.com', 'se.com', 'se.net', 'uk.com', 'uk.net', 'us.com', 'uy.com', 'za.com' ]; // sanitize the URL $url = trim($url); // check if we can parse the URL if ($host = parse_url($url, PHP_URL_HOST)) { // check if we have IP address if (preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $host)) { return $host; } // sanitize the hostname $host = strtolower($host); // get parts of the URL $parts = explode('.', $host); // if we have just one part (eg localhost) if (!isset($parts[1])) { return $parts[0]; } // grab the TLD $tld = array_pop($parts); // grab the hostname $host = array_pop($parts) . '.' . $tld; // have we collected a double TLD? if (!empty($parts) && in_array($host, $doubleTlds)) { $host = array_pop($parts) . '.' . $host; } return $host; } return 'unknown domain'; }
Comments
Post a Comment