PHP Classes

function ConsultaEndereco

Recommend this page to a friend!

      Correios  >  All threads  >  function ConsultaEndereco  >  (Un) Subscribe thread alerts  
Subject:function ConsultaEndereco
Summary:função não está funcionando
Messages:1
Author:Cleverson Rodrigo Oliveira
Date:2019-01-25 14:33:16
 

 


  1. function ConsultaEndereco   Reply   Report abuse  
Picture of Cleverson Rodrigo Oliveira Cleverson Rodrigo Oliveira - 2019-01-25 14:33:16
fiz algumas alterações para que funcione, mas com sua expertise, tenho certeza que pode melhorar muito (se já não o fez) ;)

function ConsultaEndereco ($cep) {

$cep = preg_replace("/\D+/", "", $cep);
$ch = @curl_init('http://www.buscacep.correios.com.br/sistemas/buscacep/resultadoBuscaEndereco.cfm');

@curl_setopt($ch, CURLOPT_POST, 1);
@curl_setopt($ch, CURLOPT_POSTFIELDS, 'CEP=' . $cep );
@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$HTML = @curl_exec($ch);
curl_close($ch);
// ========================================== //
//Pega somente a parte da tabela com o resultado do cep
$partes = @array_pop( @explode('<table class="tmptabela">', $HTML) );
$partes = "<table>" . $partes;
$partes = @array_shift( @explode('</table>', $partes) );
$partes = "</table>" . $partes;
$partes = str_replace("<tbody>", "", $partes);
$partes = str_replace("</tbody>", "", $partes);

$retorno = array(
"cep" => $cep,
);

$DOM = new DOMDocument();
@$DOM->loadHTML($partes);
$Detail = $DOM->getElementsByTagName('td');

if($Detail->length)
{
$cidadeEstado = trim( $Detail[2]->nodeValue, "\xC2\xA0" );
$estado = array_pop( @explode( "/", $cidadeEstado ) );
$cidade = @array_shift( @explode( "/" . $estado, $cidadeEstado ) );

$retorno['logradouro'] = trim( $Detail[0]->nodeValue, "\xC2\xA0" );
$retorno['bairro'] = trim( $Detail[1]->nodeValue, "\xC2\xA0" );
$retorno['localidade'] = $cidade;
$retorno['estado'] = $estado;
$retorno['cep_formatted'] = trim( $Detail[3]->nodeValue, "\xC2\xA0" );
}
else
$retorno = false;

return $retorno;

}