gpt4 book ai didi

php - 去 PHP parse_url() 不去的地方 - 仅解析域名

转载 作者:行者123 更新时间:2023-12-02 01:32:55 24 4
gpt4 key购买 nike

PHP 的 parse_url() 有一个主机字段,其中包括完整的主机。我正在寻找最可靠(且成本最低)的方法来仅返回域名和 TLD。

给出示例:

我只查找 google.comgoogle.co.uk。我考虑了一张有效顶级域名/后缀表,并且只允许使用这些和一个单词。你会用其他方式做吗?有谁知道针对此类事情的预装有效正则表达式?

最佳答案

类似的事情怎么样?

function getDomain($url) {
$pieces = parse_url($url);
$domain = isset($pieces['host']) ? $pieces['host'] : '';
if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) {
return $regs['domain'];
}
return false;
}

将使用经典的 parse_url 提取域名,然后查找没有任何子域的有效域(www 是子域)。不适用于“localhost”之类的东西。如果不匹配任何内容,将返回 false。

//编辑:

尝试一下:

echo getDomain('http://www.google.com/test.html') . '<br/>';
echo getDomain('https://news.google.co.uk/?id=12345') . '<br/>';
echo getDomain('http://my.subdomain.google.com/directory1/page.php?id=abc') . '<br/>';
echo getDomain('https://testing.multiple.subdomain.google.co.uk/') . '<br/>';
echo getDomain('http://nothingelsethan.com') . '<br/>';

它应该返回:

google.com
google.co.uk
google.com
google.co.uk
nothingelsethan.com

当然,如果没有通过parse_url,它不会返回任何东西。 ,因此请确保它是格式正确的 URL。

//附录:

阿尔尼塔克是对的。上面提出的解决方案适用于大多数情况,但不一定适用于所有情况,并且需要进行维护,以确保它们不是带有 .morethan6 个字符等的新 TLD。提取域的唯一可靠方法是使用维护的列表,例如 http://publicsuffix.org/ 。一开始会比较痛苦,但从长远来看会更容易、更稳健。您需要确保了解每种方法的优缺点以及它如何适合您的项目。

关于php - 去 PHP parse_url() 不去的地方 - 仅解析域名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/399250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com