TLDExtract

其他类别 2025-08-19

弃用

考虑使用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,它知道其域的子域以及其国家代码的域名。

TLDExtractResult)#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 = 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具有一些可用的方法:

TLDExtractExtract(); # 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">
 $ 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并将其用作分析结果。

TLDExtractResultInterface {} new LayerShifter TLDExtract Extract(null, CustomResult::class);">
 class CustomResult implements LayerShifter  TLDExtract ResultInterface {}

new LayerShifter  TLDExtract  Extract ( null , CustomResult::class);

解析模式

软件包具有三种解析方式:

  • 允许ICANN后缀(域是由ICANN或IANA根区数据库的一部分委派的域);
  • 允许私人域(域是由域持有人提交给公共后缀列表的修正案,以表达他们如何操作域安全策略);
  • 允许自定义(例如不在列表中但可以使用的域,例如:mycompany等)。

默认情况下,要与公共后缀列表概念套件保持在所有这些模式中运行,但是您可以轻松地更改此行为:

TLDExtractExtract; 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);">
 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许可下发布。请参阅许可证文件以获取更多信息。

下载源码

通过命令行克隆项目:

git clone https://github.com/layershifter/TLDExtract.git