【发布时间】:2011-01-08 21:06:41
【问题描述】:
我正在使用这个 PHP 函数来验证 URL。
$url = preg_replace("/[^A-Za-z0-9-\/\.\:]/", "", trim($url));
$url = preg_replace('%^(?!https?://www\.).*%', 'http://www\.$0', $url);
但是,这对我来说并不完美。我想要这个控件:
1 - 它是以 http:// 还是 https:// 开头的?如果没有,请添加 http(或 https)
2 - 如果没有子域并且没有 www ,请添加 .但如果它有子域,请不要添加 www。
例子:
example.com
CONVERT -> http://www.example.com
www.example.com
CONVERT -> http://www.example.com
subdomain.example.com
CONVERT -> http://subdomain.example.com
http://subdomain.example.com
CONVERT -> http://subdomain.example.com
所以,我需要改进我的 REGEX 模式。但我不能。我该如何使用它?
【问题讨论】:
-
第一个正则表达式将从任何现有 url 路径中删除太多有效字符,并在任何新奇的
http://[::1]/~user/a+b?x=1#2上失败。 -
regex problem with url 的可能重复项
标签: php regex validation url