Desenvolvimento

1 jun, 2018

Conheça o PHP Domain Parser

Publicidade

Tudo bom, pessoal?

No último artigo, falamos sobre como criar um sistema de whois para verificação de registros de domínio utilizando o PHP para o seu terminal. No artigo de hoje também falaremos sobre domínios.

Uma coisa que tive que trabalhar durante muito tempo, foi com a validação dos domínios de onde uma requisição chegava. Eu só podia validar um usuário dentro de um sistema em específico se ele fosse direcionado ao sistema através de links que vinham de domínios específicos. E uma coisa que eu tinha muito que fazer era realizar o parser desses domínios.

Atualmente, uma jeito muito bom para realizar o parser de domínios é com o PHP Domain Parser. Com ele, você passa um domínio e, junto à uma lista de sufixos de subdomínios ele faz todo o trabalho de separar cada parte do seu domínio (subdomínio, sufixo, se o domínio é ICANN e outras coisas).

Para poder usar o PHP Domain Parser, é necessário ter a versão do PHP 7.0 ou superior e a extensão intl ativa.

Vamos ao exemplo:

Primeiramente vamos criar uma pasta pdp e importar o PHP Domain Parser ao nosso projeto:

composer require jeremykendall/php-domain-parser

E então criaremos o arquivo pdp.php com o seguinte código:

<?php

require_once('vendor/autoload.php');

use Pdp\Cache; 
use Pdp\CurlHttpClient;
use Pdp\Manager;
use Pdp\Rules;

$manager = new Manager(new Cache(), new CurlHttpClient()); //instanciando um novo manager do PHP Domain Parser
$rules = $manager->getRules(); //retornando as regras de domínio

$domain = $rules->resolve('www.imasters.com.br'); //verificando o domínio
echo $domain->getContent() . PHP_EOL;            // retorna todo o valor do domínio
echo $domain->getPublicSuffix() . PHP_EOL;       // retorna todo o valor do sufixo público
echo $domain->getRegistrableDomain() . PHP_EOL;  // retorna todo o valor do domínio registrável
echo $domain->getSubDomain() . PHP_EOL;          // retorna todo o valor do subdomínio
var_dump($domain->isResolvable()) . PHP_EOL;      // retorna se é um domínio resolvível
var_dump($domain->isKnown()) . PHP_EOL;           // retorna se é um domínio conhecido
var_dump($domain->isICANN()) . PHP_EOL;           // retorna se é um domínio ICANN
var_dump($domain->isPrivate()) . PHP_EOL;         // retorna se é um domínio privado

Depois é só executar:

php pdp.php

Agora fica muito mais fácil parsear os domínios quando você precisar.

Um grande abraço e até a próxima!