維持されている代替手段として https://github.com/jeremykendall/php-domain-parser を使用することを検討してください。
TLDExtract
、gTLD または ccTLD (汎用または国コードのトップレベル ドメイン) を、URL の登録ドメインおよびサブドメインから正確に分離します (ドメイン パーサーなど)。たとえば、「http://www.google.com」の「google」部分だけが必要だとします。
誰もがこれを誤解します。 「。」で分割します。最後の 2 つの要素を取得することは、単純な .com ドメインなどを考えている場合にのみ役立ちます。たとえば、http://forums.bbc.co.uk を解析すると考えてください。上記の単純な分割方法では、それぞれ「bbc」と「co.uk」の代わりに、ドメインとして「co」、TLD として「uk」が与えられます。 。
一方、 TLDExtract
パブリック サフィックス リストに従って現在存在する gTLD と ccTLD を検索することで、すべての gTLD と ccTLD がどのようなものであるかを認識します。したがって、URL が与えられると、そのドメインからサブドメインがわかり、国コードからそのドメインがわかります。
$ result = tld_extract ( ' http://forums.news.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
パブリック サフィックス リストから生成され、定期的に更新される TLDDatabase のデータベースを使用します。ドメインを解析または検証するための HTTP リクエストは行いません。
次のバージョンの PHP がサポートされています。
作曲家経由
$ 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);
パッケージには 3 つの解析モードがあります。
パブリック サフィックス リストとの互換性を維持するため、アイデア パッケージはデフォルトでこれらすべてのモードで実行されますが、この動作は簡単に変更できます。
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 ライセンスに基づいてリリースされています。詳細については、ライセンス ファイルを参照してください。