| |||||||
| Programming PHP, Perl, Ruby on Rails, AJAX, HTML, XHTML, CSS, JavaScript, MySQL and any other coding topics. |
![]() |
| | LinkBack | Thread Tools |
| | #1 (permalink) |
| NamePros Founder Administrator | 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" |
| |
| | #3 (permalink) |
| ₪NamePros Elite | wait working on a better one RJ
__________________ PolurNET Communications Avoid the Freeze, Enjoy the Breeze! = A very special day, February 12th = Proudly #1 on NamePros and WebHostingJury for over 3 years! ||LawPoint.org GREAT UK HOSTING DEALS NOW AT: ExcellentHost.com |
| |
| | #4 (permalink) | |
| ₪NamePros Elite | PHP Code: Quote:
Tested for 1 hour too!Cheers, Anand
__________________ PolurNET Communications Avoid the Freeze, Enjoy the Breeze! = A very special day, February 12th = Proudly #1 on NamePros and WebHostingJury for over 3 years! ||LawPoint.org GREAT UK HOSTING DEALS NOW AT: ExcellentHost.com Last edited by PolurNET; 10-28-2004 at 04:55 PM. | |
| |
| | #5 (permalink) |
| NamePros Regular | 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) | |
| ₪NamePros Elite | VERSION 2.0 Quote:
PHP Code:
__________________ PolurNET Communications Avoid the Freeze, Enjoy the Breeze! = A very special day, February 12th = Proudly #1 on NamePros and WebHostingJury for over 3 years! ||LawPoint.org GREAT UK HOSTING DEALS NOW AT: ExcellentHost.com | |
| |
| | #7 (permalink) | |
| ₪NamePros Elite | VERSION 2.5 USING FAST REGULAR EXPRESSION SEARCH ONLY! PHP Code: Quote:
__________________ PolurNET Communications Avoid the Freeze, Enjoy the Breeze! = A very special day, February 12th = Proudly #1 on NamePros and WebHostingJury for over 3 years! ||LawPoint.org GREAT UK HOSTING DEALS NOW AT: ExcellentHost.com | |
| |
| | #8 (permalink) |
| NamePros Founder Administrator | 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) 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) |
| ₪NamePros Elite | 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 You pick ![]() BTW: All case INSENSITIVE I believe, if not, let me know
__________________ PolurNET Communications Avoid the Freeze, Enjoy the Breeze! = A very special day, February 12th = Proudly #1 on NamePros and WebHostingJury for over 3 years! ||LawPoint.org GREAT UK HOSTING DEALS NOW AT: ExcellentHost.com |
| |
| | #10 (permalink) |
| NamePros Founder Administrator | Could you put that in a function that handles it all? Template for it, PHP Code: |
| |
| | #11 (permalink) |
| ₪NamePros Elite | ::Proof 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
__________________ PolurNET Communications Avoid the Freeze, Enjoy the Breeze! = A very special day, February 12th = Proudly #1 on NamePros and WebHostingJury for over 3 years! ||LawPoint.org GREAT UK HOSTING DEALS NOW AT: ExcellentHost.com |
| |
| | #12 (permalink) | |
| ₪NamePros Elite | Quote:
__________________ PolurNET Communications Avoid the Freeze, Enjoy the Breeze! = A very special day, February 12th = Proudly #1 on NamePros and WebHostingJury for over 3 years! ||LawPoint.org GREAT UK HOSTING DEALS NOW AT: ExcellentHost.com | |
| |
| | #13 (permalink) |
| ₪NamePros Elite | Hold on, I'm going to modify the function, so that only the URL needs to be inputted, and no preg_match is done outside of function
__________________ PolurNET Communications Avoid the Freeze, Enjoy the Breeze! = A very special day, February 12th = Proudly #1 on NamePros and WebHostingJury for over 3 years! ||LawPoint.org GREAT UK HOSTING DEALS NOW AT: ExcellentHost.com |
| |
| | #14 (permalink) | |
| NamePros Founder Administrator | Quote:
| |
| |
| | #15 (permalink) |
| ₪NamePros Elite | Version 2.70 PHP Code: Okay, the above is the final version, all integrated, and 100% working ![]() The function that you should call to execute the parsing: parse_url_domain() (Input: Mixed String, Output: Mixed String)Let me know if you need anything else, or more help ![]() Cheers, Anand
__________________ PolurNET Communications Avoid the Freeze, Enjoy the Breeze! = A very special day, February 12th = Proudly #1 on NamePros and WebHostingJury for over 3 years! ||LawPoint.org GREAT UK HOSTING DEALS NOW AT: ExcellentHost.com Last edited by PolurNET; 10-28-2004 at 06:38 PM. |
| |
| | #16 (permalink) |
| Senior Member | 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: |
| |
| | #18 (permalink) |
| ₪NamePros Elite | deadserious, yup, that's my version 2.5 above, but I didn't notice php.net already having it, so I made my own
__________________ PolurNET Communications Avoid the Freeze, Enjoy the Breeze! = A very special day, February 12th = Proudly #1 on NamePros and WebHostingJury for over 3 years! ||LawPoint.org GREAT UK HOSTING DEALS NOW AT: ExcellentHost.com |
| |
| | #19 (permalink) |
| Senior Member | 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"]; 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) |
| ₪NamePros Elite | 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
__________________ PolurNET Communications Avoid the Freeze, Enjoy the Breeze! = A very special day, February 12th = Proudly #1 on NamePros and WebHostingJury for over 3 years! ||LawPoint.org GREAT UK HOSTING DEALS NOW AT: ExcellentHost.com |
| |
| | #21 (permalink) |
| Senior Member | 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) |
| ₪NamePros Elite | 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 ![]() I'll get back to you on this shortly ! Cheers Anand
__________________ PolurNET Communications Avoid the Freeze, Enjoy the Breeze! = A very special day, February 12th = Proudly #1 on NamePros and WebHostingJury for over 3 years! ||LawPoint.org GREAT UK HOSTING DEALS NOW AT: ExcellentHost.com |
| |
| | #23 (permalink) |
| ₪NamePros Elite | Here is the Version 3.01 Final, 100% working, and newest full-featured version of this script. Now, it's protected by the free GNU Public License, so please respect the property rights and leave the credits. Info: PHP Code: ![]() Any $NP donation is much appreciated, I worked hard developing a nice alternative to the other codes, and a lot of hard work was put into it ensuring it's bug-free ! Leave your comments on this thread as well... Cheers, Anand
__________________ PolurNET Communications Avoid the Freeze, Enjoy the Breeze! = A very special day, February 12th = Proudly #1 on NamePros and WebHostingJury for over 3 years! ||LawPoint.org GREAT UK HOSTING DEALS NOW AT: ExcellentHost.com Last edited by PolurNET; 10-30-2004 at 04:32 AM. |
| |
| | #25 (permalink) |
| Senior Member | 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. 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: 1 (0 members and 1 guests) | |
| Thread Tools | |
| |