Erwägen Sie die Verwendung von https://github.com/jeremykendall/php-domain-parser als gepflegte Alternative.
TLDExtract
trennt die gTLD oder ccTLD (generische oder länderspezifische Top-Level-Domain) präzise von der registrierten Domain und den Subdomains einer URL, z. B. Domain-Parser. Angenommen, Sie möchten nur den „google“-Teil von „http://www.google.com“.
Jeder versteht das falsch. Aufteilung nach '.' und die Verwendung der letzten beiden Elemente reicht nur dann aus, wenn Sie an einfache Domains denken, z. B. .com. Denken Sie zum Beispiel an das Parsen von http://forums.bbc.co.uk: Die obige naive Aufteilungsmethode gibt Ihnen „co“ als Domain und „uk“ als TLD anstelle von „bbc“ bzw. „co.uk“. .
TLDExtract
hingegen weiß, wie alle gTLDs und ccTLDs aussehen, indem es die aktuell lebenden TLDs anhand der Public Suffix List nachschlägt. Wenn also eine URL gegeben ist, erkennt sie ihre Subdomain anhand ihrer Domain und ihre Domain anhand ihres Ländercodes.
$ 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
implementiert die ArrayAccess-Schnittstelle, sodass Sie einfach auf das Ergebnis zugreifen können.
var_dump ( $ result [ ' subdomain ' ]);
string ( 11 ) " forums.news "
var_dump ( $ result [ ' hostname ' ]);
string ( 3 ) " cnn "
var_dump ( $ result [ ' suffix ' ]);
string ( 3 ) " com "
Sie können das Ergebnis auch einfach in JSON konvertieren.
var_dump ( $ result -> toJson ());
string ( 54 ) " { " subdomain": " forums.news " ,"hostname":"cnn","suffix":"com"}"
Dieses Paket ist kompatibel mit PSR-1, PSR-2, PSR-4. Wenn Sie Compliance-Verstöße bemerken, senden Sie bitte einen Patch per Pull-Anfrage.
Nein. TLDExtract
verwendet eine Datenbank von TLDDatabase, die aus der öffentlichen Suffixliste generiert und regelmäßig aktualisiert wird. Es werden keine HTTP-Anfragen zum Parsen oder Validieren einer Domäne gestellt.
Die folgenden PHP-Versionen werden unterstützt.
Über Komponist
$ composer require layershifter/tld-extract
Die Klasse LayerShifter TLDExtract Result
verfügt über einige verwendbare Methoden:
$ 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
Standardmäßig verwendet das Paket die Datenbank aus dem TLDDatabase-Paket, Sie können dieses Verhalten jedoch einfach überschreiben:
new LayerShifter TLDExtract Extract ( __DIR__ . ' /cache/mydatabase.php ' );
Für weitere Details und wie Sie die Datenbank auf dem neuesten Stand halten können, TLDDatabase.
Standardmäßig erhalten Sie nach der Analyse ein Objekt der Klasse LayerShifter TLDExtract Result
, aber manchmal benötigen Sie eigene Methoden oder zusätzliche Funktionalität.
Sie können eine eigene Klasse erstellen, die LayerShifter TLDExtract ResultInterface
implementiert, und diese als Analyseergebnis verwenden.
class CustomResult implements LayerShifter TLDExtract ResultInterface {}
new LayerShifter TLDExtract Extract ( null , CustomResult::class);
Das Paket verfügt über drei Parsing-Modi:
Um die Kompatibilität mit den Ideen der öffentlichen Suffixliste zu gewährleisten, wird das Ideenpaket standardmäßig in allen diesen Modi ausgeführt. Sie können dieses Verhalten jedoch problemlos ändern:
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 );
Weitere Informationen zu den letzten Änderungen finden Sie im CHANGELOG.
$ composer test
Weitere Informationen finden Sie unter BEITRAG und VERHALTEN.
Diese Bibliothek wird unter der Apache 2.0-Lizenz veröffentlicht. Weitere Informationen finden Sie in der Lizenzdatei.