1

我需要使用 PHP 验证域名。应该只允许这种
格式:google.com等 它应该只允许 - (在特殊字符的情况下)subdomain.stack-overflow.org

不应允许其他格式,例如:http, https,?,/index.php,www.等(不应允许任何其他格式)。

我也不想允许:localhostmydomain.com

我试过了:FILTER_VALIDATE_URL但它接受http等。
我也尝试过这样的正则表达式: [a-z0-9-]+(.[a-z0-9-]+)

但它允许 ex: stackoverflow (没有.org)。

我怎样才能做到这一点?

$urlparts = parse_url(filter_var($url, FILTER_SANITIZE_URL));
if(!isset($urlparts['host'])){
    $urlparts['host'] = $urlparts['path'];
}
4

1 回答 1

1

您的正则表达式几乎是正确的。只是.“任何字符”的缩写,而不仅仅是“.”。所以,试试这个正则表达式:

/([0-9a-z-]+\.)?[0-9a-z-]+\.[a-z]{2,7}/

请记住,引入了新的顶级域。他们不使用拉丁字符。看看http://many.at/idntlds/

关于排除“mydomain.com”:您必须在应用正则表达式后检查这一点。

于 2013-08-20T10:02:22.220 回答