954,561 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?

Filter url to domain

By cwarn23 on Sep 10th, 2009 10:24 am

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);
?>
ShawnCplus
Code Monkey
Team Colleague
1,583 posts since Apr 2005
Reputation Points: 526
Solved Threads: 268
 

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

NicAx64
Posting Pro
536 posts since Mar 2009
Reputation Points: 86
Solved Threads: 44
 

Agree that using parse_url could help. Thanks for writing this

whatsgoingon
Newbie Poster
1 post since Oct 2009
Reputation Points: 10
Solved Threads: 0
 

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

roninio
Newbie Poster
2 posts since Feb 2011
Reputation Points: 10
Solved Threads: 1
 

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;
	}
kthxbai2u
Newbie Poster
1 post since Dec 2011
Reputation Points: 10
Solved Threads: 0
 

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

huongviet
Newbie Poster
3 posts since Dec 2011
Reputation Points: 10
Solved Threads: 1
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You
View similar articles that have also been tagged: