Bagwell Bagwell - 3 months ago 20
PHP Question

Completely validate URL

I've done some researching on validating URLs in PHP and found that there are many different answers on StackOverflow, some better than others, and some very old and outdated.

I have a field where users can input their website's url. The user should be able to enter the URL in any form, for example:

example.com
www.example.com
http://example.com
http://www.example.com
https://example.com
https://www.example.com


PHP comes with a function to validate URLs, however, it marks the URL as invalid if it doesn't have
http://
.

How can I validate any sort of URL, with or without
http://
or
https://
, that would ensure the URL is valid?

Thanks.

Answer

Use filter_var() as you stated, however, by definition a URL must contain a protocol:

$url = strpos($url, 'http') !== 0 ? "http://$url" : $url;

Then:

if(filter_var($url, FILTER_VALIDATE_URL)) {
    //valid
} else {
    //not valid
}