Regex To Grab Domain

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Locked
UniqueIdeaMan
Forum Contributor
Posts: 197
Joined: Wed Jan 18, 2017 3:43 pm

Regex To Grab Domain

Post by UniqueIdeaMan »

Folks,

I need a regex to extract the domain name from any url. No matter what the url looks like. Whether it has more than one dot (2nd level, 3rd level, 4th level, 5th level, etc. level domain) and whether or not it has the http://, https://, http://www., etc.).
In short, it must work on any url in the world. No matter what format the url is in aslong as the url is a valid one. No matter how good, ugly, short or long the url is.
I am spoiled for choice as too many samples are provided here and I don't know which one will best suit my purpose:
https://stackoverflow.com/questions/569 ... e-from-url

Q1. Which one is your best pick for my purpose and why that one over the others ?

Q2. Would you use the parse_url over all the regex codes mentioned here:
https://stackoverflow.com/questions/569 ... e-from-url
If parse_url is fine then why did those programmers in that above mentioned link bother with regex ?

Is my parse_url code ok ?

Code: Select all

    <?php

    include 'config.php';

    $url = "http://one.com/1.php";
    $domain = parse_url($url, PHP_URL_HOST);
    echo $domain;

    $url = "http://two.com/2.htm";
    $domain = parse_url($url, PHP_URL_HOST);
    echo $domain;


    $domain = parse_url("http://three.com/3.html", PHP_URL_HOST);
    echo $domain;


    $domain = parse_url("http://four.com/4.shtm", PHP_URL_HOST);
    echo $domain;


    $domain = parse_url('http://five.com/5.shtml', PHP_URL_HOST);
    echo $domain;

    $domain = parse_url('http://usr:pss@example.com:81/mypath/myfile.html?
    a=b&b[]=2&b[]=3#myfragment', PHP_URL_HOST);
    echo $domain;

    ?>
Notice how many types of urls I tested with parse_url. Parse_url seems to manage to grab the domain as I want.
Locked