首页 > 解决方案 > 从域字符串中获取主域

问题描述

我有一个类似third.second.tldfourth.third.second.tld在 php 中的字符串。提取主域名(second.tld)的最简单和最好的方法是什么?

我试过这个

 $domain = 'fourth.third.second.tld';
 $topLevel = array_reverse(explode('.', $domain))[0];
 $secondLevel = array_reverse(explode('.', $domain))[1];
 $mainDomain = $secondLevel . '.' . $topLevel;

但我认为这有点复杂。有没有更简单的方法来做到这一点?

标签: phpstring

解决方案


它比您想象的要复杂 - 请使用专门为此类操作构建的库。否则,您可能会发现不同 TLD 的各种陷阱。例如,在 .com-domains 中,第二级通常是“主域”,但英国的用户习惯于 .co.uk-domains,其中“主域”位于第 3 级。

https://github.com/layershifter/TLDExtract是为 PHP 构建的库之一,自述文件从一个示例开始,用于提取和拆分 TLD、“主域”和子域。TLDExtract 还支持 IDNA 编码的域(国际化域名)。


推荐阅读