惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

小众软件
小众软件
N
News and Events Feed by Topic
A
About on SuperTechFans
aimingoo的专栏
aimingoo的专栏
The Cloudflare Blog
H
Heimdal Security Blog
Schneier on Security
Schneier on Security
Engineering at Meta
Engineering at Meta
Google Online Security Blog
Google Online Security Blog
宝玉的分享
宝玉的分享
AI
AI
The GitHub Blog
The GitHub Blog
MongoDB | Blog
MongoDB | Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
The Last Watchdog
The Last Watchdog
T
Troy Hunt's Blog
S
Security @ Cisco Blogs
H
Hacker News: Front Page
F
Fortinet All Blogs
博客园_首页
S
Secure Thoughts
N
News and Events Feed by Topic
P
Proofpoint News Feed
Microsoft Azure Blog
Microsoft Azure Blog
I
InfoQ
Spread Privacy
Spread Privacy
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Hugging Face - Blog
Hugging Face - Blog
Hacker News: Ask HN
Hacker News: Ask HN
C
CXSECURITY Database RSS Feed - CXSecurity.com
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
L
LINUX DO - 最新话题
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Schneier on Security
Know Your Adversary
Know Your Adversary
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Scott Helme
Scott Helme
P
Privacy & Cybersecurity Law Blog
S
Securelist
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
O
OpenAI News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
PCI Perspectives
PCI Perspectives
L
LangChain Blog
雷峰网
雷峰网
Security Archives - TechRepublic
Security Archives - TechRepublic
V2EX - 技术
V2EX - 技术

孟坤博客

我用 HTML 复刻了 QQ2006 | 孟坤博客 我用 HTML 复刻了 QQ2006 | 孟坤博客 小米智能家电产品使用体验 | 孟坤博客 小米智能家电产品使用体验 | 孟坤博客 【已送完】腾讯云 EdgeOne 免费计划兑换码 | 孟坤博客 【已送完】腾讯云 EdgeOne 免费计划兑换码 | 孟坤博客 PHP 从链接中提取出顶级域名 | 孟坤博客 愚人节整蛊代码:你屏幕上有根毛 | 孟坤博客 愚人节整蛊代码:你屏幕上有根毛 | 孟坤博客 deepin 安装小记 | 孟坤博客 deepin 安装小记 | 孟坤博客 HTML + CSS 实现一个酷炫的夜间模式切换动画 | 孟坤博客 HTML + CSS 实现一个酷炫的夜间模式切换动画 | 孟坤博客 CSS 实现新拟态(Neumorphism) UI 风格 | 孟坤博客 CSS 实现新拟态(Neumorphism) UI 风格 | 孟坤博客 CSS 绘制圣诞老人 | 孟坤博客 CSS 绘制圣诞老人 | 孟坤博客 PHP 实现“万能”的短网址还原 | 孟坤博客 PHP 实现“万能”的短网址还原 | 孟坤博客
PHP 从链接中提取出顶级域名 | 孟坤博客
mengkun · 2024-10-20 · via 孟坤博客

最近在做某个项目时,收到一个需求是用 PHP 解析出链接中的顶级域名。众所周知,如果只需要解析出链接中的域名部分,使用 PHP 自带的 parse_url 函数即可做到:

<?php
$url = 'https://tool.mkblog.cn/markdown/';
echo parse_url($url)['host'];    // tool.mkblog.cn

如果需要进一步从中间提取出顶级域名,那么只需要按点(.)分割成数组,再取数组中最后两个元素组合到一起,即可得到 mkblog.cn

然而有一些域名却不按“常理”出牌,[aru_62]比如 http://www.baidu.net.cn/ 这个链接,它对应的“顶级域名”实际上是 baidu.net.cn 这个三级域名。类似的域名还有 xxx.com.cnxxx.org.cnxxx.gov.cn 等等。

找了下资料,发现有一个专门的Public Suffix List公共项目,收集了所有的公共域名后缀![aru_50]

Public Suffix List 是一个不断更新的数据库,旨在为 Web 应用程序提供标准化的接口,以正确处理 Cookie、安全策略和其他与域名相关的问题。这个列表由志愿者维护,并进行严格的验证,确保了数据的质量和准确性。

更妙的是还有个相对应的开源 PHP 库 [aru_12]:https://github.com/jeremykendall/php-domain-parser。不过,这个库需要用 composer 导入,我用的虚拟主机没有 composer。尝试着改了下,要改动的文件实在是太多了。遂放弃。[aru_15]

简单研究了一下 Public Suffix List 的规则列表,发现并不复杂,于是花了点时间自己写了一个轻量级的解析库,无任何其它依赖,支持中文域名解析,支持自动纠错,支持自动更新数据库。测试了一下效果非常棒!已经开源到 GitHub 上了,有需要的可以自取[aru_47]

传送门

这个库的用法如下:

// 引入模块
include_once('DomainParser.class.php');

// 初始化
$parser = new DomainParser();

// 更新公共域名后缀数据库(可选,一般每周更新一次就够了,无需每次更新)
// $parser->update();

// 解析链接
$url = 'http://test.abc.tool.mkblog.cn/pathto/1';
$result = $parser->parse($url);

// 获取结果
if ($result['code'] == 200) {
    echo $result['icann'];
}

解析结果

字段 类型 说明
code int 200 - 解析成功 / 其他数值 - 解析失败
msg string 如果解析失败,返回错误消息
host string 返回解析出的 host 部分
icann string 返回基于 Public Suffix List 中 ICANN 规则解析出的顶级域名
private string 返回基于 Public Suffix List 中 PRIVATE 规则解析出的顶级域名

更具体的使用说明可以看 GitHub 上的 README~

参考资料

9人点赞

打赏