RE: [PHP] Parse domain from URL
| From: | Stefan Wixfort | Date: | Wed, 06 Jun 2007 23:33:54 +0000 |
| Subject: | RE: [PHP] Parse domain from URL | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-256254@lists.php.net to get a copy of this message | ||
> From: Brad Fuller [mailto:bfuller@cpacampaigns.com]
> Sent: Wednesday, June 06, 2007 5:44 PM
> Subject: [PHP] Parse domain from URL
>
> Hey guys,
>
> I'm faced with an interesting problem, and wondering if there's an easy
> solution.
>
> I need to strip out a domain name from a URL, and ignore subdomains (like
> www)
>
> I can use parse_url to get the hostname. And my first thought was to take
> the last 2 segments of the hostname to get the domain. So if the URL is
> http://www.example.com/
> Then the domain is "example.com." If the URL is ÐÂÌúN”F,ߟ=”#
> http://example.org/ then
> the domain is "example.org."
>
> This seemed to work perfectly until I come across a URL like
> http://www.example.co.uk/
> My script thinks the domain is "co.uk."
>
> So I added a bit of code to account for this, basically if the 2nd to last
> segment of the hostname is "co" then take the last 3 segments.
>
> Then I stumbled across a URL like http://www.example.com.au/
>
> So it occurred to me that this is not the best solution, unless I have a
> definitive list of all exceptions to go off of.
>
> Does anyone have any suggestions?
>
> Any advice is much appreciated.
>
> Thanks,
> Brad
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
Maybe use some regexp like this:
$url = http://www.a-domain.co.uk;
$domain = preg_match( "!^(http://)([-a-z0-9]+(?:\.[-a-z0-9]+)*)$!i" ); //
you will get www.a-domain.co.uk // So u can search for "www." In front of
the string to replace it or // you could edit the search for ignoring the
'www.'
Echo $domain[2];
Greetings,
Stefan
Note: this is untested.