filter_var($url, FILTER_VALIDATE_URL)
似乎是检测$url
是否包含网址的好方法。有没有办法看到这个函数用于检测的正则表达式?
谢谢
答案 0 :(得分:6)
它使用其他东西然后使用正则表达式。在C中,它会检查php_url_parse_ex()
(C)函数的返回值,您可以在ext/standard/url.c, line 97调用ext/filter/logical_filters.c, line 440调用该函数。
在这些术语中:如果您在PHP中调用parse_url()
(PHP)并执行与php_filter_validate_url()
(C)中相同的检查,则您将获得相同的输出。
答案 1 :(得分:0)
该模式类似于URL解析。
$pattern = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
答案 2 :(得分:0)
Kris在PHP regex for validating a URL的答案使用了parse_url,在阅读了Wrikken关于filter_var($ url,FILTER_VALIDATE_URL)实际做了什么的答案之后,这似乎是最好的,因为它允许最大程度的控制。