弃用
考虑使用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,它知道其域的子域以及其国家代码的域名。
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 = 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具有一些可用的方法:
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\”>
$ 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并将其用作分析结果。
TLDExtract\\ResultInterface {}
new LayerShifter\\ TLDExtract \\Extract(null, CustomResult::class);\”>
class CustomResult implements LayerShifter \\ TLDExtract \\ResultInterface {} new LayerShifter \\ TLDExtract \\ Extract ( null , CustomResult::class);
解析模式
软件包具有三种解析方式:
- 允许ICANN后缀(域是由ICANN或IANA根区数据库的一部分委派的域);
- 允许私人域(域是由域持有人提交给公共后缀列表的修正案,以表达他们如何操作域安全策略);
- 允许自定义(例如不在列表中但可以使用的域,例如:mycompany等)。
默认情况下,要与公共后缀列表概念套件保持在所有这些模式中运行,但是您可以轻松地更改此行为:
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);\”>
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许可下发布。请参阅许可证文件以获取更多信息。
