tags:

views:

63

answers:

3

Hello,

filter_var($url, FILTER_VALIDATE_URL) seems to be great way to detect if $url contains url or not. Is there any way to see what regular expression this function uses for detecting?

Thank you

+6  A: 

It uses something else then a regex. In C, it checks the return of the php_url_parse_ex()(C) function, which you can see at: ext/standard/url.c, line 97, called at ext/filter/logical_filters.c, line 440.

In these terms: if you call parse_url()(PHP) in PHP, and perform the same checks as in php_filter_validate_url()(C), you'd have the same output.

Wrikken
A: 

The pattern is similar to the URL parsing.

$pattern = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
Trinity
Nice regexp, thank you!
Kirzilla
www.google.com => truecode.google.com => false
Cesar
A: 

Kris's answer at PHP regex for validating a URL uses parse_url which, after reading Wrikken's answer about what filter_var($url, FILTER_VALIDATE_URL) actually does, seems best because it allows the most control.