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
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
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.
The pattern is similar to the URL parsing.
$pattern = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
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.