Parsing Domainname From URL In PHP
domain-name, php, url
Solution
The domain is stored in `$_SERVER['HTTP_HOST']`.
EDIT: I believe this returns the whole domain. To just get the top-level domain, you could do this:
// Add all your wanted subdomains that act as top-level domains, here (e.g. 'co.cc' or 'co.uk')
// As array key, use the last part ('cc' and 'uk' in the above examples) and the first part as sub-array elements for that key
$allowed_subdomains = array(
'cc' => array(
'co'
),
'uk' => array(
'co'
)
);
$domain = $_SERVER['HTTP_HOST'];
$parts = explode('.', $domain);
$top_level = array_pop($parts);
// Take care of allowed subdomains
if (isset($allowed_subdomains[$top_level]))
{
if (in_array(end($parts), $allowed_subdomains[$top_level]))
$top_level = array_pop($parts).'.'.$top_level;
}
$top_level = array_pop($parts).'.'.$top_level;
Problem
How I can parse a domain from URL in PHP? It seems that I need a country domain database. Examples: http://mail.google.com/hfjdhfjd/jhfjd.html -> google.com http://www.google.bg/jhdjhf/djfhj.html -> google.bg http://www.google.co.uk/djhdjhf.php -> google.co.uk http://www.tsk.tr/jhjgc.aspx -> tsk.tr http://subsub.sub.nic.tr/ -> nic.tr http://subsub.sub.google.com.tr -> google.com.tr http://subsub.sub.itoy.info.tr -> itoy.info.tr Can it be done with whois request? Edit: There are few domain names with `.tr` (`www.nic.tr`, `www.tsk.tr`) the others are as you know: `www.something.com.tr`, `www.something.org.tr` Also there is no `www.something.com.bg`, `www.something.org.bg`. They are `www.something.bg` like the Germans' `.de` But there are `www.something.a.bg`, `www.something.b.bg` thus `a.bg`, `b.bg`, `c.bg` and so on. (`a.bg` is like `co.uk`) There on the net must be list of these top domain names. Check how is coloured the url `http://www.agrotehnika97.a.bg/` in Internet Explorer. Check also ``` www.google.co.uk<br> www.google.com.tr<br> www.nic.tr<br> www.tsk.tr ```