Considere utilizar https://github.com/jeremykendall/php-domain-parser como alternativa mantenida.
TLDExtract
separa con precisión el gTLD o ccTLD (dominio de nivel superior genérico o de código de país) del dominio registrado y los subdominios de una URL, por ejemplo, el analizador de dominios. Por ejemplo, supongamos que desea sólo la parte "google" de "http://www.google.com".
Todo el mundo se equivoca en esto. Dividiendo en el '.' y tomar los últimos 2 elementos es de gran ayuda sólo si estás pensando en dominios simples, por ejemplo, .com. Piense en analizar http://forums.bbc.co.uk, por ejemplo: el ingenuo método de división anterior le dará 'co' como dominio y 'uk' como TLD, en lugar de 'bbc' y 'co.uk' respectivamente. .
TLDExtract
por otro lado, sabe cómo son todos los gTLD y ccTLD buscando los que están activos actualmente de acuerdo con la Lista pública de sufijos. Entonces, dada una URL, conoce su subdominio a partir de su dominio y su dominio a partir de su código de país.
$ 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
implementa la interfaz ArrayAccess, por lo que puede acceder fácilmente a su resultado.
var_dump ( $ result [ ' subdomain ' ]);
string ( 11 ) " forums.news "
var_dump ( $ result [ ' hostname ' ]);
string ( 3 ) " cnn "
var_dump ( $ result [ ' suffix ' ]);
string ( 3 ) " com "
También puedes simplemente convertir el resultado a JSON.
var_dump ( $ result -> toJson ());
string ( 54 ) " { " subdomain": " forums.news " ,"hostname":"cnn","suffix":"com"}"
Este paquete cumple con PSR-1, PSR-2, PSR-4. Si observa descuidos de cumplimiento, envíe un parche mediante solicitud de extracción.
No. TLDExtract
utiliza una base de datos de TLDDatabase que se genera a partir de la Lista pública de sufijos y se actualiza periódicamente. No realiza ninguna solicitud HTTP para analizar o validar un dominio.
Se admiten las siguientes versiones de PHP.
Vía compositor
$ composer require layershifter/tld-extract
Class LayerShifter TLDExtract Result
tiene algunos métodos utilizables:
$ 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
De forma predeterminada, el paquete utiliza la base de datos del paquete TLDDatabase, pero puede anular este comportamiento simplemente:
new LayerShifter TLDExtract Extract ( __DIR__ . ' /cache/mydatabase.php ' );
Para obtener más detalles y cómo mantener actualizada la base de datos, TLDDatabase.
De forma predeterminada, después del análisis, recibirá el objeto de la clase LayerShifter TLDExtract Result
, pero en algún momento necesitará métodos propios o funcionalidad adicional.
Puede crear su propia clase que implemente LayerShifter TLDExtract ResultInterface
y utilizarla como resultado del análisis.
class CustomResult implements LayerShifter TLDExtract ResultInterface {}
new LayerShifter TLDExtract Extract ( null , CustomResult::class);
El paquete tiene tres modos de análisis:
Para mantener la compatibilidad con el paquete de ideas de la Lista pública de sufijos se ejecuta en todos estos modos de forma predeterminada, pero puede cambiar fácilmente este comportamiento:
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 );
Consulte CHANGELOG para obtener más información sobre los cambios recientes.
$ composer test
Consulte CONTRIBUCIÓN y CONDUCTA para obtener más detalles.
Esta biblioteca se publica bajo la licencia Apache 2.0. Consulte el archivo de licencia para obtener más información.