Considere usar https://github.com/jeremykendall/php-domain-parser como alternativa mantida.
TLDExtract
separa com precisão o gTLD ou ccTLD (domínio de primeiro nível genérico ou com código de país) do domínio registrado e subdomínios de uma URL, por exemplo, analisador de domínio. Por exemplo, digamos que você queira apenas a parte 'google' de 'http://www.google.com'.
Todo mundo entende isso errado. Dividindo no '.' e pegar os dois últimos elementos é muito útil apenas se você estiver pensando em domínios simples, por exemplo, .com. Pense em analisar http://forums.bbc.co.uk, por exemplo: o método ingênuo de divisão acima fornecerá 'co' como domínio e 'uk' como TLD, em vez de 'bbc' e 'co.uk' respectivamente .
TLDExtract
por outro lado, sabe a aparência de todos os gTLDs e ccTLDs pesquisando os que estão atualmente vivos de acordo com a Lista Pública de Sufixos. Assim, dado um URL, ele conhece seu subdomínio a partir de seu domínio e seu domínio a partir de seu 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 a interface ArrayAccess, para que você possa acessar seu resultado de forma simples.
var_dump ( $ result [ ' subdomain ' ]);
string ( 11 ) " forums.news "
var_dump ( $ result [ ' hostname ' ]);
string ( 3 ) " cnn "
var_dump ( $ result [ ' suffix ' ]);
string ( 3 ) " com "
Além disso, você pode simplesmente converter o resultado em JSON.
var_dump ( $ result -> toJson ());
string ( 54 ) " { " subdomain": " forums.news " ,"hostname":"cnn","suffix":"com"}"
Este pacote é compatível com PSR-1, PSR-2, PSR-4. Se você notar descuidos de conformidade, envie um patch por meio de solicitação pull.
Não. TLDExtract
usa banco de dados do TLDDatabase gerado a partir da Lista Pública de Sufixos e atualizado regularmente. Ele não faz nenhuma solicitação HTTP para analisar ou validar um domínio.
As seguintes versões do PHP são suportadas.
Através do Compositor
$ composer require layershifter/tld-extract
A classe LayerShifter TLDExtract Result
possui alguns métodos utilizáveis:
$ 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
Por padrão, o pacote usa o banco de dados do pacote TLDDatabase, mas você pode substituir esse comportamento simplesmente:
new LayerShifter TLDExtract Extract ( __DIR__ . ' /cache/mydatabase.php ' );
Para mais detalhes e como manter o banco de dados atualizado TLDDatabase.
Por padrão, após a análise, você receberá o objeto da classe LayerShifter TLDExtract Result
, mas às vezes você precisará de métodos próprios ou funcionalidades adicionais.
Você pode criar uma classe própria que implemente LayerShifter TLDExtract ResultInterface
e usá-la como resultado da análise.
class CustomResult implements LayerShifter TLDExtract ResultInterface {}
new LayerShifter TLDExtract Extract ( null , CustomResult::class);
O pacote possui três modos de análise:
Para manter a compatibilidade com o pacote de ideias da Lista Pública de Sufixos é executado em todos esses modos por padrão, mas você pode facilmente alterar esse comportamento:
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 obter mais informações sobre o que mudou recentemente.
$ composer test
Consulte CONTRIBUIÇÃO e CONDUTA para obter detalhes.
Esta biblioteca é lançada sob a licença Apache 2.0. Consulte Arquivo de licença para obter mais informações.