function isUrl($s)
{
return preg_match('/^http[s]?:\/\/'.
'(([0-9]{1,3}\.){3}[0-9]{1,3}'. // IP形式的URL- 199.194.52.184
'|'. // 允许IP和DOMAIN(域名)
'([0-9a-z_!~*\'()-]+\.)*'. // 域名- www.
'([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.'. // 二级域名
'[a-z]{2,6})'. // first level domain- .com or .museum
'(:[0-9]{1,4})?'. // 端口- :80
'((\/\?)|'. // a slash isn't required if there is no file name
'(\/[0-9a-zA-Z_!~\'\(\)\[\]\.;\?:@&=\+\$,%#-\/^\*\|]*)?)$/',
$s) == 1;
}
经过多年的积累,逐步完善写出的url验证算法
要是还遇到问题,请把有问题的url贴上来,希望还能继续完善