From 9fdf38f04e0391d9a42d2abdc09035088c5f22f7 Mon Sep 17 00:00:00 2001 From: Jansen Vitor Date: Mon, 4 May 2015 12:07:21 -0300 Subject: [PATCH] =?UTF-8?q?Altera=C3=A7=C3=A3o=20para=20consultar=20direto?= =?UTF-8?q?=20no=20site=20dos=20Correios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/JansenFelipe/CepGratis/CepGratis.php | 47 ++++++++---------------- 1 file changed, 16 insertions(+), 31 deletions(-) diff --git a/src/JansenFelipe/CepGratis/CepGratis.php b/src/JansenFelipe/CepGratis/CepGratis.php index 1eb4af5..73b9529 100644 --- a/src/JansenFelipe/CepGratis/CepGratis.php +++ b/src/JansenFelipe/CepGratis/CepGratis.php @@ -21,41 +21,26 @@ public static function consulta($cep) { throw new Exception('O cep informado não parece ser válido'); $client = new Client(); - $crawler = $client->request('POST', 'http://m.correios.com.br/movel/buscaCepConfirma.do', array( - 'cepEntrada' => Utils::unmask($cep), - 'tipoCep' => '', - 'cepTemp' => '', - 'metodo' => 'buscarCep' + $crawler = $client->request('POST', 'http://www.buscacep.correios.com.br/servicos/dnec/consultaLogradouroAction.do', array( + 'relaxation' => Utils::unmask($cep), + 'Metodo' => 'listaLogradouro', + 'TipoConsulta' => 'relaxation', + 'StartRow' => '1', + 'EndRow' => '10' )); - $retorno = array('logradouro' => null, 'bairro' => null, 'cidade' => null, 'cep' => null, 'uf' => null); + $tr = $crawler->filter(".ctrlcontent > div:nth-child(7) > table:nth-child(1) > tr:nth-child(1)"); - $respostas = $crawler->filter(".caixacampobranco > span.resposta"); - $respostaDestaques = $crawler->filter(".caixacampobranco > span.respostadestaque"); + $retorno = array( + 'logradouro' => $tr->filter("td:nth-child(1)")->html(), + 'bairro' => $tr->filter("td:nth-child(2)")->html(), + 'cidade' => $tr->filter("td:nth-child(3)")->html(), + 'uf' => $tr->filter("td:nth-child(4)")->html(), + 'cep' => $tr->filter("td:nth-child(5)")->html() + ); - for ($i = 0; $i < $respostas->count(); $i++) { - switch ($respostas->eq($i)->html()) { - - case 'Logradouro: ': - $aux = explode(" - ", $respostaDestaques->eq($i)->html()); - $retorno['logradouro'] = (count($aux) == 2) ? $aux[0] : $respostaDestaques->eq($i)->html(); - break; - - case 'Bairro: ': - $retorno['bairro'] = $respostaDestaques->eq($i)->html(); - break; - - case 'Localidade / UF: ': - $explode = explode('/', $respostaDestaques->eq($i)->html()); - $retorno['cidade'] = $explode[0]; - $retorno['uf'] = $explode[1]; - break; - - case 'CEP: ': - $retorno['cep'] = $respostaDestaques->eq($i)->html(); - break; - } - } + $aux = explode(" - ", $retorno['logradouro']); + $retorno['logradouro'] = (count($aux) == 2) ? $aux[0] : $retorno['logradouro']; return array_map('htmlentities', array_map('trim', $retorno)); }