简体   繁体   English

PHP,使用域扩展的url验证

[英]PHP, url validation with domain extension

I've been trying to use FILTER_VALIDATE_URL, as well as regex, to validate url, but no luck. 我一直在尝试使用FILTER_VALIDATE_URL以及正则表达式验证网址,但没有运气。

For example: 例如:

$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");
    }

The above will show valid url, even if domain extension is omitted, the same goes for FILTER_VALIDATE_URL 以上将显示有效的url,即使省略了域扩展名, FILTER_VALIDATE_URL

What I would like is to validate url only if entered in following format: 我想要的是仅在以下列格式输入时验证URL:

http://www.stackoverflow.com
https://www.stackoverflow.com
http://stackoverflow.com
https://stackoverflow.com

anything like: 任何事情:

http://stackoverflow
https://stackoverflow
http://www.stackoverflow
https://www.stackoverflow

should be invalid. 应该是无效的。

And of course it should work with any type of domain extension. 当然,它应该适用于任何类型的域扩展。

If you want to work with FILTER_VALIDATE_USE, acording to documentation , you should use: 如果您想使用FILTER_VALIDATE_USE,根据文档 ,您应该使用:

FILTER_FLAG_HOST_REQUIRED - URL must include host name (like http://www.example.com ) FILTER_FLAG_HOST_REQUIRED - 网址必须包含主机名(例如http://www.example.com

like: 喜欢:

<?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");
}
?>

And this should work. 这应该工作。 Hope it helps! 希望能帮助到你!

Edit: 编辑:

The results of the code: 代码的结果:

stackoverflow.com is not a valid URL stackoverflow.com不是有效的URL

http://stackoverflow.com is a valid URL http://stackoverflow.com是一个有效的URL

http://www.stackoverflow.com is a valid URL http://www.stackoverflow.com是有效的URL

ww.stackoverflow.com is not a valid URL ww.stackoverflow.com不是有效的URL

http://stackoverflow is a valid URL http:// stackoverflow是一个有效的URL

As @mickmackusa said, I removed the regex snippet, if you want regex, you could use: 正如@mickmackusa所说,我删除了正则表达式片段,如果你想要正则表达式,你可以使用:

validate url with regular expressions 使用正则表达式验证url

Or: 要么:

URL Validation REGEX - URL just valid with http:// URL验证REGEX - URL仅对http://有效

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM