In these three functions, you can filter to a url to just the domain name. There are three main methods of doing so which are all shown in the example and the usage of each function is shown in the example.

<?php
//function one - get entire domain
function fulldomain($domainb) {
    $bits = explode('/', $domainb);
    if ($bits[0]=='http:' || $bits[0]=='https:')
        {
        return $bits[0].'//'.$bits[2].'/';
        } else {
        return 'http://'.$bits[0].'/';
        }
    unset($bits);
    }

//function two - use regex to get entire domain
function preg_fulldomain ($domainb) {
    return 

preg_replace('/^((http(s)?:\/\/)?([^\/]+)(\/)?)(.*)/','$1',$domain

b);
    }

//function three - get domain and remove subdomain.
function domain($domainb)
	{
	$bits = explode('/', $domainb);
	if ($bits[0]=='http:' || $bits[0]=='https:')
		{
		$domainb= $bits[2];
		} else {
		$domainb= $bits[0];
		}
	unset($bits);
	$bits = explode('.', $domainb);
	$idz=count($bits);
	$idz-=3;
	if (strlen($bits[($idz+2)])==2) {
	$url=$bits[$idz].'.'.$bits[($idz+1)].'.'.$bits[($idz+2)];
	} else if (strlen($bits[($idz+2)])==0) {
	$url=$bits[($idz)].'.'.$bits[($idz+1)];
	} else {
	$url=$bits[($idz+1)].'.'.$bits[($idz+2)];
	}
	return $url;
	}


//below is the usage of each function
$address='http://www.subdomain.example.com/blog/index.php?id=1';
echo fulldomain($address);
echo '<br>';
echo preg_fulldomain($address);
echo '<br>';
echo domain($address);
?>

You have used the preg instead of ereg I think it's a good Patrice .

Agree that using parse_url could help. Thanks for writing this

$parseUrl = parse_url(trim($Address));
$bits=explode('.', $parseUrl['host' );
unset($bits[0]);
$domain = implode('.',$bits);

ronino: Thanks, I used your code... And modified it too! The following code will only remove the subdomain if it exists... If you run http://domain.com through ronino's code, it would come out as "com". This is a simple fix to check there are more than 2 "bits".

$parseUrl = parse_url(trim($filename));
	$bits=explode('.', $parseUrl['host']);
	if (count($bits) > 2) {
		unset($bits[0]);
	}
	$domain = implode('.',$bits);

Enjoy ;P
http://kthxbai2u.com/

***Note: The above code only works on single . TLD's (.com, .net, .org) If you get "fasthost.co.uk", it will come out as "co.uk"***
I am working on a fix :)

[EDIT]

I ended up using another code from elsewhere which works flawlessly so far. Here it is:

function getDomain($domainb)
	{
	$bits = explode('/', $domainb);
	if ($bits[0]=='http:' || $bits[0]=='https:')
		{
		$domainb= $bits[2];
		} else {
		$domainb= $bits[0];
		}
	unset($bits);
	$bits = explode('.', $domainb);
	$idz=count($bits);
	$idz-=3;
	if (strlen($bits[($idz+2)])==2) {
	$url=$bits[$idz].'.'.$bits[($idz+1)].'.'.$bits[($idz+2)];
	} else if (strlen($bits[($idz+2)])==0) {
	$url=$bits[($idz)].'.'.$bits[($idz+1)];
	} else {
	$url=$bits[($idz+1)].'.'.$bits[($idz+2)];
	}
	return $url;
	}

Thank you for code. I will try this code in my application, I hope it will good work

Member Avatar

diafol

This is why we user parse_url()