首先,根据我的要求定义“URL”.
唯一允许的协议是http://和https://
然后是像stackoverflow.com这样的强制域名
然后可选地其余的url组件(路径,查询,哈希,…)
根据我的要求提供有效和无效网址的列表供参考
有效
> stackoverflow.com
> stackoverflow.com/questions/ask
> https://stackoverflow.com/questions/ask
> http://www.amazon.com/Computers-Internet-Books/b/ref=bhp_bb0309A_comint2?ie=UTF8&node=5&pf_rd_m=ATVPDKIKX0DER&pf_rd_s=browse&pf_rd_r=0AH7GM29WF81Q72VPFDH&pf_rd_t=101&pf_rd_p=1273387142&pf_rd_i=283155
> amazon.com/Computers-Internet-Books/b/ref=bhp_bb0309A_comint2?ie=UTF8\u0026amp;node=5\u0026amp;pf_rd_m=ATVPDKIKX0DER\u0026amp;pf_rd_s=browse\u0026amp;pf_rd_r=0AH7GM29WF81Q72VPFDH\u0026amp;pf_rd_t=101\u0026amp;pf_rd_p=1273387142\u0026amp;pf_rd_i=283155
> http://test-site.com(filter_var拒绝此!!!我有破折号的域名)
无效
> http://www(php filter_var允许这个,是的,我知道是一个有效的网址)
>谷歌
> http://www..des(php filter_var允许这个)
>域名中包含不允许使用字符的任何URL
为了完整性,这里是我的PHP版本:5.3.2-1ubuntu4.2