Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php URL验证正则表达式_Php_Regex_Validation_Url - Fatal编程技术网

Php URL验证正则表达式

Php URL验证正则表达式,php,regex,validation,url,Php,Regex,Validation,Url,据我所知,还有许多其他问题类似于标题,但我问这个问题的主要原因是我希望我的验证尽可能完美。下面是我对哪个URL应该有效的解释 http://(如果给定,则匹配,否则跳过), domain.com(应匹配并返回验证) subdomain.domain.com(应匹配并返回验证) www.com(应返回false) http://www.com(应返回false) 我根据自己的需要搜索了很多关于perfect regex模式的内容,但没有成功,所以我在这里发布了我自己的文章,想知道除了它,它是否会跳

据我所知,还有许多其他问题类似于标题,但我问这个问题的主要原因是我希望我的验证尽可能完美。下面是我对哪个URL应该有效的解释

http://
(如果给定,则匹配,否则跳过),
domain.com
(应匹配并返回验证)
subdomain.domain.com
(应匹配并返回验证)
www.com
(应返回false)
http://www.com
(应返回false)

我根据自己的需要搜索了很多关于perfect regex模式的内容,但没有成功,所以我在这里发布了我自己的文章,想知道除了它,它是否会跳过任何其他有效的URL。 如果是,请纠正我

模式:

((?:http | https | ftp):/)(?:www.)(?!www)[A-Z0-9][A-Z0-9.-]*(?:[A-Z0-9][A-Z0-9.-]*)+:?(\d+)/


我知道这实际上并不能直接回答您的问题,但撇开正则表达式不谈,您还可以使用FILTER_VALIDATE_URL标志,如果URL有效,则返回URL,否则返回FALSE:

   var_dump(filter_var('http://example.com', FILTER_VALIDATE_URL));
   // string(18) http://example.com
您可以读取此函数使用的筛选器,特别是关于VALIDATE_URL筛选器使用的标志的最后一行


实际上,我不知道它是如何在内部实现的,但我想它比你在外面的互联网上可以找到的许多正则表达式工作得更好。

我知道这实际上并不能直接回答你的问题,但撇开正则表达式不谈,你也可以使用标志过滤器\u VALIDATE\u URL,它在有效URL的情况下返回URL,或假,否则:

   var_dump(filter_var('http://example.com', FILTER_VALIDATE_URL));
   // string(18) http://example.com
您可以读取此函数使用的筛选器,特别是关于VALIDATE_URL筛选器使用的标志的最后一行


我实际上不知道它是如何在内部实现的,但是我想它比你在互联网上能找到的许多正则表达式都好。

http://
在上面的正则表达式中是可选的。我不确定你到底想匹配什么或不匹配什么,这与最常用的URL匹配表达式不同--
www.com
http://www.com
这是完美的选择有效的URL,每个URL都指向一个实时网站。是否要匹配
http://localhost
;是否要匹配IP地址?--如果你告诉我们你用这个做什么,这可能非常有用。
http://
在上面的正则表达式中是可选的。我不确定您要匹配或不匹配的内容与最常用的URL匹配表达式不同--
www.com
http://www.com
是完全有效的URL,每个URL都指向一个实时网站。是否要匹配
http://localhost
;是否要匹配IP地址?--如果您告诉我们您使用它的目的,它可能会非常有用。@Mr.Shan0它不再有用了:-有一个,但它从5.2.14和5.3.3起就被修复了。升级你的php。是的,我没有注意到,但是
filter\u var
允许
http://go
http://localhost
而且我的正则表达式不允许
http://localhost
正如我在问题中所说。@Shan0先生,它不再是了:-有一个,但从5.2.14和5.3.3开始就被修复了。升级你的php。是的,我没有注意到,但是
filter\u var
允许
http://go
http://localhost
而且我的正则表达式不允许
http://localhost
正如我在问题中所说。