![](/img/trans.png)
[英]Php regular expression, url validation, following dots in domain name is valid?
[英]PHP, url validation with domain extension
我一直在尝试使用FILTER_VALIDATE_URL以及正则表达式验证网址,但没有运气。
例如:
$url = "http://www.stackoverflow";
if (preg_match("/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/", $url)) {
echo "URL is valid";
}
else {
echo "URL is invalid";
}
echo("$url is not a valid URL");
}
以上将显示有效的url,即使省略了域扩展名, FILTER_VALIDATE_URL
我想要的是仅在以下列格式输入时验证URL:
http://www.stackoverflow.com
https://www.stackoverflow.com
http://stackoverflow.com
https://stackoverflow.com
任何事情:
http://stackoverflow
https://stackoverflow
http://www.stackoverflow
https://www.stackoverflow
应该是无效的。
当然,它应该适用于任何类型的域扩展。
如果您想使用FILTER_VALIDATE_USE,根据文档 ,您应该使用:
FILTER_FLAG_HOST_REQUIRED - 网址必须包含主机名(例如http://www.example.com )
喜欢:
<?php
$url = "https://www.stackoverflow.com";
if (filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)) {
echo("$url is a valid URL");
} else {
echo("$url is not a valid URL");
}
?>
这应该工作。 希望能帮助到你!
编辑:
代码的结果:
stackoverflow.com不是有效的URL
http://stackoverflow.com是一个有效的URL
http://www.stackoverflow.com是有效的URL
ww.stackoverflow.com不是有效的URL
http:// stackoverflow是一个有效的URL
正如@mickmackusa所说,我删除了正则表达式片段,如果你想要正则表达式,你可以使用:
要么:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.