PHP validation/regex for URL

I’ve been looking for a simple regex for URLs, does anybody have one handy that works well? I didn’t find one with the zend framework validation classes and have seen several implementations.


Answer

I used this on a few projects, I don’t believe I’ve run into issues, but I’m sure it’s not exhaustive:

$text = preg_replace(
  '#((https?|ftp)://(\S*?\.\S*?))([\s)\[\]{},;"\':<]|\.\s|$)#i',
  "'<a href=\"$1\" target=\"_blank\">$3</a>$4'",
  $text
);

Most of the random junk at the end is to deal with situations like http://domain.com. in a sentence (to avoid matching the trailing period). I’m sure it could be cleaned up but since it worked. I’ve more or less just copied it over from project to project.

Leave a Reply

Your email address will not be published. Required fields are marked *