弃用
考虑使用https://gith**ub.c*om/jeremykendall/php-domain-parser作为替代方案。
TLDExtract
TLDExtract将GTLD或CCTLD(通用或国家代码上层域)与注册域和URL的子域(例如域解析器)分开。例如,假设您只需要“ http://www.*g*oo*gle.com”的“ Google”部分。
每个人都错了。在“。”上分裂只有当您考虑简单的EG .com域时,就可以使用最后两个元素才能达到很长的距离。例如,思考解析http://forums.*b**bc.co.uk例如:上面的天真分裂方法将使您作为域名和'uk'作为TLD,而不是“ BBC”和“ CO.UK”。
另一方面, TLDExtract根据公共后缀列表来查找当前活着的gtlds和CCTLD的样子。因此,鉴于URL,它知道其域的子域以及其国家代码的域名。
$ result = tld_extract ( ' http://forums.ne**ws*.cnn.com/ ' );
var_dump ( $ result );
object ( LayerShifter TLDExtract Result) #34 (3) {
[ " subdomain " :" LayerShifter TLDExtract Result " :private]=>
string(11) " forums.news"
[ " hostname " :" LayerShifter TLDExtract Result " :private]=>
string(3) " cnn"
[ " suffix " :" LayerShifter TLDExtract Result " :private]=>
string(3) " com"
}
Result实现了ArrayAccess接口,因此您可以简单地访问其结果。
var_dump ( $ result [ ' subdomain ' ]);
string ( 11 ) " forums.news "
var_dump ( $ result [ ' hostname ' ]);
string ( 3 ) " cnn "
var_dump ( $ result [ ' suffix ' ]);
string ( 3 ) " com "另外,您可以简单地将结果转换为JSON。
var_dump ( $ result -> toJson ());
string ( 54 ) " { " subdomain": " forums.news " ,"hostname":"cnn","suffix":"com"}"该软件包符合PSR-1,PSR-2,PSR-4。如果您注意到合规性监督,请通过拉动请求发送补丁。
TLDExtract是否向公共后缀列表网站提出请求?
否TLDExtract使用从tlddatabase中生成的数据库,该数据库从公共后缀列表生成并定期更新。它没有提出任何HTTP请求来解析或验证域。
要求
支持以下版本的PHP。
- PHP 5.5
- PHP 5.6
- PHP 7.0
- PHP 7.1
- PHP 7.2
- PHP 7.3
- HHVM
安装
通过作曲家
$ composer require layershifter/tld-extract其他结果方法
类LayerShifter TLDExtract Result具有一些可用的方法:
$ extract = new LayerShifter TLDExtract Extract ();
# For domain 'shop.github.com'
$ result = $ extract -> parse ( ' shop.github.com ' );
$ result -> getFullHost (); // will return (string) 'shop.github.com'
$ result -> getRegistrableDomain (); // will return (string) 'github.com'
$ result -> isValidDomain (); // will return (bool) true
$ result -> isIp (); // will return (bool) false
# For IP '192.168.0.1'
$ result = $ extract -> parse ( ' 192.168.0.1 ' );
$ result -> getFullHost (); // will return (string) '192.168.0.1'
$ result -> getRegistrableDomain (); // will return null
$ result -> isValidDomain (); // will return (bool) false
$ result -> isIp (); // will return (bool) true
自定义数据库
默认情况下,软件包正在使用TLDDATABASE软件包中的数据库,但是您可以简单地覆盖此行为:
new LayerShifter TLDExtract Extract ( __DIR__ . ' /cache/mydatabase.php ' );有关更多详细信息以及如何保持数据库更新tlddatabase。
实施自己的结果
默认情况下,解析后,您将收到LayerShifter TLDExtract Result类的对象,但是有时您需要自己的方法或其他功能。
您可以创建自己的类,该类实现LayerShifter TLDExtract ResultInterface并将其用作分析结果。
class CustomResult implements LayerShifter TLDExtract ResultInterface {}
new LayerShifter TLDExtract Extract ( null , CustomResult::class);
解析模式
软件包具有三种解析方式:
- 允许ICANN后缀(域是由ICANN或IANA根区数据库的一部分委派的域);
- 允许私人域(域是由域持有人提交给公共后缀列表的修正案,以表达他们如何操作域安全策略);
- 允许自定义(例如不在列表中但可以使用的域,例如:mycompany等)。
默认情况下,要与公共后缀列表概念套件保持在所有这些模式中运行,但是您可以轻松地更改此行为:
use LayerShifter TLDExtract Extract ;
new Extract ( null , null , Extract:: MODE_ALLOW_ICANN );
new Extract ( null , null , Extract:: MODE_ALLOW_PRIVATE );
new Extract ( null , null , Extract:: MODE_ALLOW_NOT_EXISTING_SUFFIXES );
new Extract ( null , null , Extract:: MODE_ALLOW_ICANN | Extract:: MODE_ALLOW_PRIVATE );
更改日志
有关更多信息,请参阅ChangElog最近发生了什么变化。
测试
$ composer test 贡献
有关详细信息,请参阅贡献和行为。
执照
该库在Apache 2.0许可下发布。请参阅许可证文件以获取更多信息。
通过命令行克隆项目: