Buscando endereço através de CEP com PHP

Gunnar CorreaGunnar Correa24/02/2018 às 02:33:57 - 8.868 acessos

Veja como é simples encontrar dados de um determinado endereço através do CEP.


É através do CEP que podemos encontrar dados relacionados a um endereço, assim podemos preencher os demais campos automaticamente sem que o usuário preencha manualmente. Antes de prosseguirmos, precisamos entender de fato o que é um CEP e porque ele existe.

“O Código de Endereçamento Postal é um conjunto numérico constituído de oito algarismos, cujo objetivo principal é orientar e acelerar o encaminhamento, o tratamento e a distribuição de objetos de correspondência, por meio da sua atribuição a localidades, logradouros, unidades dos Correios, serviços, órgãos públicos, empresas e edifícios.” (Acesso em 24/02/2018 https://www.correios.com.br/para-voce/precisa-de-ajuda/o-que-e-cep-e-por-que-usa-lo).

Normalmente para preencher os dados do formulário com base nos números do CEP informado, utilizamos o Javascript para fazer uma requisição via AJAX e retornar os dados, para posteriormente preencher os campos.

Existem diversos serviços que disponibilizam API para integração, aqui vamos usar o site viacep.com, porém é muito importante que o desenvolvedor fique atento e estes serviços, pois eles podem parar de funcionar, e se isso acontecer, a aplicação tem que continuar funcionando sem ter erros que comprometam os formulários.

Vamos há um exemplo de como obter os dados de um CEP e retornar em uma string JSON, posteriormente convertermos este JSON em um array.

Para retornar os dados, basta fazer uma chamada através de uma URL passando o CEP sem o ‘‘.

Exemplo de utilização: https://viacep.com.br/ws/123456000/json/

Para executar o código abaixo, é só acessara URL do script e passar uma query string com o CEP, da seguinte forma localhost/cep.php?cep=03009000.

Código 01:

$cep = filter_input(INPUT_GET, "cep");
 
 
if($cep){
    $cep = str_replace("-", "", $cep);
 
    $json = file_get_contents('https://viacep.com.br/ws/'. $cep . '/json/');
 
    $jsonToArray = json_decode($json);
    ?-->
    <p>CEP: <?=$jsonToArray->cep;?></p>
    <p>LOGRADOURO: <?=$jsonToArray->logradouro;?></p>
    <p>COMPLEMENTO: <?=$jsonToArray->complemento;?></p>
    <p>BAIRRO: <?=$jsonToArray->bairro;?></p>
    <p>LOCALIDADE: <?=$jsonToArray->localidade;?></p>
    <p>UF: <?=$jsonToArray->uf;?></p>
    <p>UNIDADE: <?=$jsonToArray->unidade;?></p>
    <p>IBGE: <?=$jsonToArray->ibge;?></p>
    <p>GIA: <?=$jsonToArray->gia;?></p>
     
    <?php
}

Agora vamos utilizar uma outra API para testes, essa API é interna do SatellaSoft é possui apenas 5 CEP cadastrado, ela deve ser utilizada apenas para testes, até porque não tem nenhuma utilidade com uma quantidade baixa de informações.

Exemplo de utilização: http://satellasoft.com/servicos/buscacep/?cep=123456000. Porém para utilizar o serviço de API de testes, é necessário que sua aplicação esteja rodando em um servidor WEB e não em servidor local.

Os CEPs disponíveis são:

CEP 01: 19050690 - Presidente Prudente

CEP 02: 01001000 - São Paulo

CEP 03: 69921126 - Acre

CEP 04: 13940000 - Águas e Lindóia/SP

CEP 05: 19640000 - Iepê/SP

Veja no algoritmo abaixo como fazer a requisição.

Código 02:

$cep = filter_input(INPUT_GET, "cep");
 
 
if($cep){
    $cep = str_replace("-", "", $cep);
 
    $json = file_get_contents('http://localhost/buscacep/?cep='. $cep);
 
    $jsonToArray = json_decode($json);
    ?-->
    <p>CEP: <?=$jsonToArray->cep;?></p>
    <p>LOGRADOURO: <?=$jsonToArray->logradouro;?></p>
    <p>COMPLEMENTO: <?=$jsonToArray->complemento;?></p>
    <p>BAIRRO: <?=$jsonToArray->bairro;?></p>
    <p>LOCALIDADE: <?=$jsonToArray->localidade;?></p>
    <p>UF: <?=$jsonToArray->uf;?></p>
    <p>UNIDADE: <?=$jsonToArray->unidade;?></p>
    <p>IBGE: <?=$jsonToArray->ibge;?></p>
    <p>GIA: <?=$jsonToArray->gia;?></p>
     
    <?php
}
 

Caso você não tenha um servidor WEB para testar, você pode criar a API de testes, basta criar um script com os códigos abaixo e fazer a chamada a partir dele, mas respeite as limitaçãos dos CEPs disponíveis, como se trata de uma API de testes, não use em ambiente de produção. A URL de testes, foi criada apenas para exemplificar esse artigo.

Código 03:

<?php
	header('Content-Type: application/json; charset=utf-8');
	
	$req = filter_input(INPUT_GET, "cep", FILTER_SANITIZE_NUMBER_INT);

	if($req){
		$req = str_replace("-", "", $req);
		$cepdata = array();
		switch($req){
			case '19050690':
				$cepdata = array(
					  "cep" => "19050-690",
					  "logradouro" => "Rua Democrata",
					  "complemento" => "",
					  "bairro"=> "Jardim Bongiovani",
					  "localidade" => "Presidente Prudente",
					  "uf" => "SP",
					  "unidade" => "",
					  "ibge" => "3541406",
					  "gia" => "5629"
				);			
			break;
			case '01001000':
				$cepdata = array(
						"cep" => "01001-000",
						"logradouro" => "Praça da Sé",
						"complemento" => "lado ímpar",
						"bairro" => "Sé",
						"localidade" => "São Paulo",
						"uf" => "SP",
						"unidade" => "",
						"ibge" => "3550308",
						"gia" => "1004"
				);			
			break;
			case '69921126':
				$cepdata = array(
					  "cep" => "69921-126",
					  "logradouro" =>  "Rua Angelim",
					  "complemento" =>  "",
					  "bairro" =>  "Loteamento Novo Horizonte",
					  "localidade" =>  "Rio Branco",
					  "uf" =>  "AC",
					  "unidade" =>  "",
					  "ibge" =>  "1200401",
					  "gia" =>  ""
				);
			break;
			case '13940000':
				$cepdata = array(
					  "cep"  =>  "13940-000",
					  "logradouro"  =>  "",
					  "complemento"  =>  "",
					  "bairro"  =>  "",
					  "localidade"  =>  "Águas de Lindóia",
					  "uf"  =>  "SP",
					  "unidade"  =>  "",
					  "ibge"  =>  "3500501",
					  "gia" => "1533"
				);
			break;
			
			case '19640000':
				$cepdata = array(
					  "cep"  =>  "19640-000",
					  "logradouro"  =>  "",
					  "complemento"  =>  "",
					  "bairro"  =>  "",
					  "localidade"  =>  "Iepê",
					  "uf"  =>  "SP",
					  "unidade"  =>  "",
					  "ibge"  =>  "3519907",
					  "gia" => "3475"
				);
			break;
		}
		
		echo json_encode($cepdata);
		
	}else{
		echo "invalid";
	}
?>

Por hora é apenas isso, eu vou ficando por aqui e nos vemos na próxima oportunidade.



Buscacep cep o que é cep com php requisição php consultar cep consulta cep php programação programação php retornar dados do cep com php api cep api cep download criar api com php api cep

Compartilhe


Gunnar Correa

Gunnar Correa

Autodidata, Graduado em Desenvolvimento Web (FIPP), Especialista em Tecnologias na Educação (Unoeste) e Pós-graduando em Segurança da Informação (Universidade Cruzeiro do Sul). Começou seus estudos na área de programação quando era criança, e atualmente está estudando desenvolvimento de jogos. É CEO do portal SatellaSoft, criado em 2009 com o intuito de compartilhar conhecimento de forma gratuita e inédita.



Site atualizado

Olá, nosso site recebeu uma nova atualização e por conta disso, alguns artigos ainda estão sendo atualizados. Dependendo do conteúdo que você procura, poderá encontrar imagens e trechos de códigos mal formatados.

Estamos trabalhando para normalizar todos os conteúdos, muito em breve, esse problema não mais existirá.


Comentários