Get in touch:
01524 851 877
07718 896 553

Validating Url Strings In PHP

Posted on Sep 25 2008 by Matthew Jakeman

I was writing a form a little while ago that requests a url from a user. Obviously it would be nice to validate the string the user input in some way. I am not a fan of writing a regex for something like this when I know that there are bound to be many examples of doing this knocking about already so to save time I once again headed over to google to look around.

I came across this link which has a nice little example of a regex to achieve a good validation.

Below is a copy and paste of building the regex string from that site with brief explanations of what each part achieves.

// SCHEME
$urlregex = "^(https?|ftp)\:\/\/";

// USER AND PASS (optional)
$urlregex .= "([a-z0-9+!*(),;?&=\$_.-]+(\:[a-z0-9+!*(),;?&=\$_.-]+)?@)?";
// HOSTNAME OR IP
$urlregex .= "[a-z0-9+\$_-]+(\.[a-z0-9+\$_-]+)*";
// PORT (optional)
$urlregex .= "(\:[0-9]{2,5})?";
// PATH (optional)
$urlregex .= "(\/([a-z0-9+\$_-]\.?)+)*\/?";// GET Query (optional)
$urlregex .= "(\?[a-z+&\$_.-][a-z0-9;:@/&%=+\$_.-]*)?";// ANCHOR (optional)
$urlregex .= "(#[a-z_.-][a-z0-9+\$_.-]*)?\$";

This builds a nice regex string which can be used with the eregi() function to validate a url string like so:

if (eregi($urlregex, $url))
{
echo "URL Valid";
}
else
{
echo "URL Invalid";
}

This regex will validate nearly all valid url’s and is handy to have knocking about.

Thanks to the original author, whoever that may be…..

Leave a comment