Pensez à utiliser https://github.com/jeremykendall/php-domain-parser comme alternative maintenue.
TLDExtract
sépare avec précision le gTLD ou le ccTLD (domaine générique ou national de premier niveau) du domaine enregistré et des sous-domaines d'une URL, par exemple un analyseur de domaine. Par exemple, supposons que vous souhaitiez uniquement la partie « google » de « http://www.google.com ».
Tout le monde se trompe. Fractionnement sur le '.' et prendre les 2 derniers éléments ne va très loin que si vous pensez à des domaines simples, par exemple .com. Pensez à l'analyse de http://forums.bbc.co.uk par exemple : la méthode de fractionnement naïve ci-dessus vous donnera « co » comme domaine et « uk » comme TLD, au lieu de « bbc » et « co.uk » respectivement. .
D'autre part, TLDExtract
sait à quoi ressemblent tous les gTLD et ccTLD en recherchant ceux actuellement en vie selon la liste des suffixes publics. Ainsi, étant donné une URL, il connaît son sous-domaine à partir de son domaine, et son domaine à partir de son code pays.
$ 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
implémente l’interface ArrayAccess, afin que vous puissiez accéder simplement à son résultat.
var_dump ( $ result [ ' subdomain ' ]);
string ( 11 ) " forums.news "
var_dump ( $ result [ ' hostname ' ]);
string ( 3 ) " cnn "
var_dump ( $ result [ ' suffix ' ]);
string ( 3 ) " com "
Vous pouvez également simplement convertir le résultat en JSON.
var_dump ( $ result -> toJson ());
string ( 54 ) " { " subdomain": " forums.news " ,"hostname":"cnn","suffix":"com"}"
Ce package est conforme aux normes PSR-1, PSR-2, PSR-4. Si vous remarquez des oublis de conformité, veuillez envoyer un correctif via une pull request.
Non. TLDExtract
utilise la base de données de TLDDatabase générée à partir de la liste de suffixes publics et mise à jour régulièrement. Il n'effectue aucune requête HTTP pour analyser ou valider un domaine.
Les versions suivantes de PHP sont prises en charge.
Via Compositeur
$ composer require layershifter/tld-extract
La classe LayerShifter TLDExtract Result
possède quelques méthodes utilisables :
$ 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
Par défaut, le package utilise la base de données du package TLDDatabase, mais vous pouvez simplement remplacer ce comportement :
new LayerShifter TLDExtract Extract ( __DIR__ . ' /cache/mydatabase.php ' );
Pour plus de détails et comment maintenir la base de données à jour, TLDDatabase.
Par défaut, après l'analyse, vous recevrez un objet de la classe LayerShifter TLDExtract Result
, mais vous avez parfois besoin de vos propres méthodes ou de fonctionnalités supplémentaires.
Vous pouvez créer votre propre classe qui implémente LayerShifter TLDExtract ResultInterface
et l'utiliser comme résultat d'analyse.
class CustomResult implements LayerShifter TLDExtract ResultInterface {}
new LayerShifter TLDExtract Extract ( null , CustomResult::class);
Le package dispose de trois modes d'analyse :
Pour conserver la compatibilité avec le package d'idées de liste de suffixes publics, il s'exécute par défaut dans tous ces modes, mais vous pouvez facilement modifier ce comportement :
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 );
Veuillez consulter CHANGELOG pour plus d'informations sur ce qui a changé récemment.
$ composer test
Veuillez consulter CONTRIBUTION et CONDUITE pour plus de détails.
Cette bibliothèque est publiée sous la licence Apache 2.0. Veuillez consulter le fichier de licence pour plus d'informations.