| | |||||
| ||||||||
| Programming PHP, Perl, Ruby on Rails, AJAX, HTML, XHTML, CSS, JavaScript, MySQL and any other coding topics. |
![]() |
| | LinkBack | Thread Tools |
| | THREAD STARTER #1 (permalink) |
| NamePros Webmaster ![]() ![]() ![]() Join Date: Feb 2003
Posts: 12,930
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Parse a URL in PHP to return domain Please write a short php function to parse a URL and return just the domain name. Example: Code: $url="http://www.namepros.com/showthread.php?p=350493"; $domain = getdomain($url); # domain equals "namepros.com" |
| |
| | #2 (permalink) |
| Account Closed Join Date: May 2004 Location: /etc/passwd
Posts: 2,178
![]() ![]() ![]() ![]() ![]() ![]() | <? function getdomain($url) { $explode = explode(".", $url); $tld = $explode[2]; $tld = explode("/", $tld); $name = $explode[1]; print("$name.$tld[0]"); } print(getdomain("http://www.namepros.com/showthread.php?p=350493")); ?> this should work. |
| |
| | #4 (permalink) | ||||
| Senior Member Join Date: Jul 2004 Location: I ♥ Business Law
Posts: 3,082
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | PHP Code:
Tested for 1 hour too!Cheers, Anand
Last edited by PolurNET; 10-28-2004 at 05:55 PM.
| ||||
| |
| | #5 (permalink) |
| NamePros Regular Join Date: Apr 2004 Location: Near Albany NY
Posts: 261
![]() | Would have taken this on if I saw it earlier Nice function Polur!
__________________ CoverageArea.com & CoverageAreas.com - TAKING OFFERS Discuss Business | PC Gaming Talk | Travel Safety Tips |
| |
| | #6 (permalink) | ||||
| Senior Member Join Date: Jul 2004 Location: I ♥ Business Law
Posts: 3,082
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | VERSION 2.0
PHP Code: | ||||
| |
| | #7 (permalink) | ||||
| Senior Member Join Date: Jul 2004 Location: I ♥ Business Law
Posts: 3,082
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | VERSION 2.5 USING FAST REGULAR EXPRESSION SEARCH ONLY! PHP Code:
| ||||
| |
| | THREAD STARTER #8 (permalink) |
| NamePros Webmaster ![]() ![]() ![]() Join Date: Feb 2003
Posts: 12,930
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Ideally, it should be able to handle all types of domains, including .co.uk and URLS that contain uppercase letters (http://WWW.NamePros.com/ returns namepros.com) ????: NamePros.com http://www.namepros.com/showthread.php?t=53456 So far, this one seems to be working good. This was based off Polur's first submission. I was using a function similar to axilant's explode method before but those third level ccTLDs would trip it up. PHP Code: $domain = getdomain($url); |
| |
| | #9 (permalink) |
| Senior Member Join Date: Jul 2004 Location: I ♥ Business Law
Posts: 3,082
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Version 2 and Version 2.5 are what I recommend RJ. They handle ALL SUDOMAINS (meaning, will remove, even if 'www', or 'blablah' or 'forum', etc.) It will also accept ALL TYPES of TLDS... you name it you got it. That's why the examples are posted with the 'anytld' as the extension ![]() Version 1 will only change 'www' which is not an ideal situation Version 2.5 would be the fastest processing version, as only a complicated, albeit fast regular expression operation is performed. Only thing is that I didn't make it a function, but let me know ????: NamePros.com http://www.namepros.com/showthread.php?t=53456 You pick ![]() BTW: All case INSENSITIVE I believe, if not, let me know |
| |
| | THREAD STARTER #10 (permalink) |
| NamePros Webmaster ![]() ![]() ![]() Join Date: Feb 2003
Posts: 12,930
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Could you put that in a function that handles it all? Template for it, PHP Code: |
| |
| | #11 (permalink) |
| Senior Member Join Date: Jul 2004 Location: I ♥ Business Law
Posts: 3,082
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | : roof of All Domain (Even multi-dots) Compatibility with Version 1.0, 2.0, 2.5::Say my URL is "http://forum.nameprosrules.co.uk" Returns: "nameprosrules.co.uk" !!! ========= For Case Insensitivity, Modify above last echo line by: {Version 2.0} PHP Code: PHP Code: Cheers, Anand |
| |
| | #12 (permalink) | ||||
| Senior Member Join Date: Jul 2004 Location: I ♥ Business Law
Posts: 3,082
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
| ||||
| |
| | THREAD STARTER #14 (permalink) | ||||
| NamePros Webmaster ![]() ![]() ![]() Join Date: Feb 2003
Posts: 12,930
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
| ||||
| |
| | #15 (permalink) |
| Senior Member Join Date: Jul 2004 Location: I ♥ Business Law
Posts: 3,082
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | |
| |
| | #16 (permalink) |
| Senior Member Join Date: Aug 2002
Posts: 1,255
![]() ![]() | I just took an example off php.net and modified it to grab domains out of httpS URL's as well as http and put it in a function how I think you wanted it. It would probably just take a simple modification to the regex if you wanted to ignore parsing URL's which are just ip addresses. PHP Code: |
| |
| | #19 (permalink) |
| Senior Member Join Date: Dec 2003 Location: IllawarraClassifieds.com.au
Posts: 2,360
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | HI Interesting thread it seems very close to what I am looking for a code that will support .co.uk domain but what is the Var$ I need to use to do the following $myurl =$_SERVER["HTTP_HOST"]; ????: NamePros.com http://www.namepros.com/showthread.php?t=53456 I tried the following, $myurl = parse_url_domain($_SERVER["HTTP_HOST"]); and also $domain = $_SERVER["HTTP_HOST"]; $myurl = parse_url_domain($domain); echo $myurl; But it did not work, any ideas. Reason why I want this to work is that I have multiple domains parked as one website with the same dns and I want the domain the visitor has in their browser to load in a special popunder I have... I have it working with all ext but .co.uk or any thing with a multi ext on the end of the domain. Do I make sense if not sorry Im still a newbie to PHP Thanks Tom Dahne Expire Domain Software http://www.expireddomainsoftware.com |
| |
| | #20 (permalink) |
| Senior Member Join Date: Jul 2004 Location: I ♥ Business Law
Posts: 3,082
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Hi Tom, If I'm not mistaken it might be caused by a lack of quotes around the server call code, when defining $domain. But I'll try with the server variable you said, and get back to you ![]() if you liked this code too, I'd appreciate a small donation of NPs if you don't mind ![]() Cheers Anand |
| |
| | #21 (permalink) |
| Senior Member Join Date: Dec 2003 Location: IllawarraClassifieds.com.au
Posts: 2,360
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | HI Anand, Well I got it all working with other code I had already but it did not work with .co.uk or multi extensions and when I saw your code would handle .co.uk I tried it but could not get it to work using the code below.. $domain = $_SERVER["HTTP_HOST"]; $myurl = parse_url_domain($domain); If you work it out let me know, I will be happy to donate some NP$ if I can get it working, ![]() Thanks Tom Dahne Expired Domain Software http://www.expireddomainsoftware.com |
| |
| | #22 (permalink) |
| Senior Member Join Date: Jul 2004 Location: I ♥ Business Law
Posts: 3,082
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Whoa! After hours of php debugging, I discovered a certain predicament with my code... using no 'www' in the URL. In this case, the system actually parses and removes the domain, as that's the first target (no 'www' is present, remember...) I'm in the process of making the parsing code "intelligent" by figuring if a www is present or not, and if not, to leave as is (after regular parsing), if there is, then run the additional parsing ![]() And actually, Tom, your problem is related with that, as the Server HTTP HOST variable contains no 'www' So I've developed a preliminary checking mechanism for that too, it should go well ![]() ????: NamePros.com http://www.namepros.com/showthread.php?t=53456 I'll get back to you on this shortly ! Cheers Anand |
| |
| | #23 (permalink) |
| Senior Member Join Date: Jul 2004 Location: I ♥ Business Law
Posts: 3,082
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | |
| |
| | #24 (permalink) |
| Senior Member Join Date: Jan 2004
Posts: 1,187
![]() ![]() ![]() | Note that if you are in PHP routine and you just want the hostname for the page you are on, it's as simple as this: PHP Code: |
| |
| | #25 (permalink) |
| Senior Member Join Date: Mar 2004
Posts: 1,402
![]() ![]() ![]() | This may seem like a simple job but it's actually pretty complicated. Without going too much into the details of dealing with URL obsfucation, host names containing more than [a-z0-9-,] people who don't bother to use HTTP://, port numbers, etc., it's still difficult. There is a fundamental problem when dealing with ccTLDs. ????: NamePros.com http://www.namepros.com/showthread.php?t=53456 For example, originally domains could be registered as .COM.CN, .NET.CN, etc. Now names can be registered as .CN. The result is that www.net.cn is a domain name, whereas www.ten.cn is a host in the ten.cn domain. To accurately do what you want, you would need to include a rule set for every TLD and ccTLD to define what the TLD really is( ie com.cn and/or .cn). More importantly you need to keep this up to date as the rules change from time to time. Without doing all that your best bet is to grab the host name with a simple regex and either strip the www off the front, or take the last 2 or 3 levels of the host name. This can be done with a simple regex. For example: "http[s]?:\/\/(www\.)?(.*?)[^a-z0-9\-\.]" Puts the host name less www. Into $2 "http[s]?:\/\/.*?([a-zA-Z0-9-]{2,67}\.[a-zA-Z]{2,4})[^a-z0-9\-\.]" puts the last two levels of the host name into $1 (ie yahoo.com, .co.uk) "http[s]?:\/\/.*?([a-zA-Z0-9-]{2,67}\.[a-zA-Z0-9-]{2,67}\.[a-zA-Z]{2,4})[^a-z0-9\-\.]" puts the last three levels of the host name into $1 (ie yahoo.co.uk, mail.yahoo.com) Any combination of those ought to be able to approximate what you want. Personally I use a half baked version of the rule set system described above, which is fine for what I need. |
| |
![]() |
| Currently Active Users Viewing This Thread: 2 (0 members and 2 guests) | |
| Thread Tools | |
| |