Search code examples
phpparse-url

changing a given url to return only the domain


I'm getting a url from a form, this way:

$input_website = isset($_POST['website']) ? check_plain($_POST['website']) : 'None';

I need to get back a naked domain name(for some API integration), for example: http://www.example.com will return as example.com and www.example.com will return example.com etc.

I have this code now, that returns the correct url for the first case http://www.example.com but returns nothing for www.example.com or even example.com:

function get_domain($url)
{
    $pieces = parse_url($url);
    $domain = isset($pieces['host']) ? $pieces['host'] : '';
    if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) {
        return $regs['domain'];
    }
    return false;
}

Can you please advice on the matter?


Solution

  • I ended up doing something a bit different - checking if there is http and if not, i'm adding it using this function:

    function addHttp($website) {
        if (!preg_match("~^(?:f|ht)tps?://~i", $url)) {
            $url = "http://" . $url;
        }
        return $website;
    }
    

    and only then i'm sending it to my other function that return the domain. For sure not the best way, but it works.