Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save rodrigowebjump/ac0089330c78fcf137ab to your computer and use it in GitHub Desktop.
Save rodrigowebjump/ac0089330c78fcf137ab to your computer and use it in GitHub Desktop.
Consulta endereço a partir do CEP nos Correios
<?php
if(empty($_GET['cep'])){
exit;
}
$cep = preg_replace('/[^0-9]/', '', $_GET['cep']);
if(strlen($cep) != 8){
exit;
}
$url = 'http://m.correios.com.br/movel/buscaCepConfirma.do';
$post = array(
'cepEntrada'=> $cep,
'tipoCep' => '',
'cepTemp' => '',
'metodo' => 'buscarCep',
);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
if(!$response = curl_exec($ch)){
exit;
}
$response = mb_convert_encoding($response, 'UTF-8');
$dados = array(
'logradouro' => '/^.*<span class="resposta">(?:Logradouro|Endereço):\s*<\/span>\s*<span class="respostadestaque">(.*?)<\/span>.*$/s',
'bairro' => '/^.*<span class="resposta">Bairro:\s*<\/span>\s*<span class="respostadestaque">(.*?)<\/span>.*$/s',
'localidade' => '/^.*<span class="resposta">Localidade\s*\/\s*UF:\s*<\/span>\s*<span class="respostadestaque">(.*?)\/\s*(?:[A-Z]+)\s*<\/span>.*$/s',
'uf' => '/^.*<span class="resposta">Localidade\s*\/\s*UF:\s*<\/span>\s*<span class="respostadestaque">(?:.*?)\/\s*([A-Z]+)\s*<\/span>.*$/s',
'cep' => '/^.*<span class="resposta">CEP:\s*<\/span>\s*<span class="respostadestaque">(.*?)<\/span>.*$/s',
'cliente' => '/^.*<span class="resposta">Cliente:\s*<\/span>\s*<span class="respostadestaque">(.*?)<\/span>.*$/s',
);
foreach($dados as $key => $value){
if(preg_match($value, $response, $match)){
if($key == 'logradouro'){
$match[1] = explode(', ', $match[1]);
$dados[$key] = trim(preg_replace('/-.*/', '', $match[1][0]));
$dados['numero'] = trim($match[1][1]);
}
else{
$dados[$key] = trim($match[1]);
}
}
else{
$dados[$key] = null;
}
}
echo json_encode($dados);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment