php - 从域字符串中获取主域
问题描述
我有一个类似third.second.tld
或fourth.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;
但我认为这有点复杂。有没有更简单的方法来做到这一点?
解决方案
它比您想象的要复杂 - 请使用专门为此类操作构建的库。否则,您可能会发现不同 TLD 的各种陷阱。例如,在 .com-domains 中,第二级通常是“主域”,但英国的用户习惯于 .co.uk-domains,其中“主域”位于第 3 级。
https://github.com/layershifter/TLDExtract是为 PHP 构建的库之一,自述文件从一个示例开始,用于提取和拆分 TLD、“主域”和子域。TLDExtract 还支持 IDNA 编码的域(国际化域名)。
推荐阅读
- sql - 项目状态表推导SQL逻辑
- laravel - Laravel 中的 DRY 编码 7+
- eclipse - Eclipse 中的某些文件显示为灰色/没有语法着色/无法识别函数
- php - 更新 laravel 版本后出现 Api“401 - 未验证”错误
- python-3.x - 从我的 wordcloud 中排除无趣的单词我缺少什么?
- python-requests - 如何使用 python 从远程链接中提取 tar.gz 文件
- javascript - 连接两个 AJAX 请求返回到 1 个数组
- installation - 在 SDM845 上使用 Android Things 控制板载 LED
- c# - 无效的资源字典 clr 命名空间
- java - 如何在 xml 中包装非集合属性?