Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lucasmartins

[Resolvido] Como buscar o CEP pelo logradouro?

Recommended Posts

Fala galera,

 

Eu sei como buscar o endereço pelo CEP.

 

Só que agora eu estava querendo ao contrário, buscar o CEP pelo endereço, tem como????

 

Estou tentando procurar na internet mas tá difícil.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que um mesmo endereço podem te responder vários CEPs, já que podem haver erros de digitação, ruas que possuem nomes parecidos/iguais..

 

O banco que você puxa o endereço pelo CEP é seu? ou um webservice? ele possibilita enviar o endereço?(acho dificil)

Compartilhar este post


Link para o post
Compartilhar em outros sites

O banco que você puxa o endereço pelo CEP é seu? ou um webservice? ele possibilita enviar o endereço?(acho dificil)

 

É um webservice. E acho que não me permite enviar o endereço... apenas o CEP e ele me retorna o endereço.

 

Eu queria algo como o google... porque se eu coloco lá no maps google:

 

R. dos Pinheiros, 1275 - Pinheiros, São Paulo - SP

 

Ele mostra o CEP... será que se eu informo o endereço certinho ele vai me retornar mais de um CEP??? o.O

 

Grato,

Lucas Martins

Compartilhar este post


Link para o post
Compartilhar em outros sites

sinceramente o CEP é o melhor a se fazer, voce oculta os outros campos e quando preenche-se o CEP a pessoa ja tem tudo preenchido, cidade, estado, bairro, rua na maioria dos casos, só falta o numero, é melhor para ambos, só que quem não sabe o CEP ai fica dificIl. Em todo caso use CEP =D

 

estou a procurar algo nos livros aqui de casa, mas não garanto nada por enquanto, até mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

sinceramente o CEP é o melhor a se fazer, voce oculta os outros campos e quando preenche-se o CEP a pessoa ja tem tudo preenchido, cidade, estado, bairro, rua na maioria dos casos, só falta o numero, é melhor para ambos, só que quem não sabe o CEP ai fica dificIl. Em todo caso use CEP =D

 

estou a procurar algo nos livros aqui de casa, mas não garanto nada por enquanto, até mais

 

Acho que você não entendeu muito bem Alexandre.

 

Buscar o endereço pelo CEP é fácil, o problema é que eu quero buscar o número do CEP pelo endereço que o cidadão irá digitar lá...

 

E pelo motivo que você disse, do cidadão não saber o CEP, ele preencherá o endereço, e após isso eu queria que um webservice buscasse o CEP correto para eu preencher no campo do CEP, só para não ficar vazio.

 

Entendeu?

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entra nesse endereço e baixe o banco de dados de CEPs

http://www.republica...ual.com.br/cep/

 

ou pelo link direto:

http://www.republica...oad/cep.sql.bz2

 

dai é só cadastrar no seu BD e fazer a busca por onde quiser... =]

 

Acho que é a solução http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif... vou fazer isso amanhã ou depois de amanhã... logo depois se der certo eu falo pra vcs, e quem sabe, até preparo um webservice que faça isso e coloque no ar pra vcs utilizarem...

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigão, presente:

 

BuscarCEP.php

<?php
/**
* Faz uma busca pelo CEP retornando o logradouro ou pelo logradouro retornando o CEP
*/
class BuscarCEP {
/**
* Caminho do serviço
*/
const URL = 'http-~~-//www.buscarcep.com.br/';

/**
* Inicia o objeto
*/
public function __construct(){
if ( !function_exists( 'curl_init' ) )
throw new RuntimeException( 'É necessário que cURL esteja instalada para fazer a busca' );
}

/**
* Busca um CEP pelo logradouro
* @param string $logradouro O nome do logradouro
* @param string $cidade A cidade
* @param string $bairro O bairro
* @param string $tipo O tipo do logradouro: Rua, Avenida....
* @return array
*/
public function &buscaLogradouro( $logradouro , $cidade , $bairro = null , $tipo = null ){
$data = array(
'formato' => 'xml',
'logradouro' => $logradouro,
'cidade' => $cidade
);

if ( $bairro ) $data[ 'bairro' ] = $bairro;
if ( $tipo ) $data[ 'tipo_logradouro' ] = $tipo;

return $this->busca( $data );
}

/**
* Busca um logradouro pelo CEP
* @param string $cep O CEP que será buscado
* @return array
*/
public function &buscaCEP( $cep ){
$data = array(
'formato' => 'xml',
'cep' => $cep
);

return $this->busca( $data );
}

/**
* Faz a busca
* @param array $data
* @return array
*/
private function &busca( array $data ){
$ret = array();

if ( $curl = curl_init() ){
curl_setopt( $curl , CURLOPT_HEADER , 0 );
curl_setopt( $curl , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt( $curl , CURLOPT_URL , sprintf( '%s?%s' , self::URL , http_build_query( $data ) ) );

$xml = curl_exec( $curl );
$ern = curl_errno( $curl ); $err = curl_error( $curl );

curl_close( $curl );

if ( !$ern ){
$dom = new DOMDocument();
$dom->loadXML( $xml );

$ret =& $this->parseXML( $dom );
} else throw new RuntimeException( $err , $ern );
}

return $ret;
}

/**
* Interpreta o XML de retorno
* @param DOMDocument &$dom
* @return array Lista de resultados
*/
private function &parseXML( DOMDocument &$dom ){
$ret = array();
$xpath = new DOMXPath( $dom );

foreach ( $xpath->query( './/retorno' ) as $retorno ){
$bcr = new BuscarCEPResult();

foreach ( $xpath->query( '*' , $retorno ) as $element ){
switch ( $name = $element->nodeName ){
case 'cep':
case 'uf':
case 'cidade':
case 'tipo_logradouro':
case 'resultado_txt':
$bcr->$name = $element->nodeValue;
break;
case 'resultado':
$bcr->$name = (int) $element->nodeValue;
break;
}
}

$ret[] = $bcr;
}

return $ret;
}
}

 

BuscarCEPResult.php

/**
* Resultado de uma busca BuscarCEP
*/
class BuscarCEPResult {
/**
* O CEP
* @var string
*/
public $cep;

/**
* Unidade Federativa
* @var string
*/
public $uf;

/**
* Cidade
* @var string
*/
public $cidade;

/**
* O tipo do logradouro (Rua, Avenida,...)
* @var string
*/
public $tipo_logradouro;

/**
* Código do resultado
* <p>
* 1 - sucesso. cep encontrado
* -1 - cep não encontrado
* -2 - formato de cep inválido
* -3 - limite de buscas de ip por minuto excedido
* -4 - ip banido. contate o administrador
* -5 - chave banida. contate o administrador
* -6 - entre 0 e 6 horas da madrugada todas as buscas são limitadas a 10 buscas por minuto
* </p>
* @var integer
*/
public $resultado;

/**
* Descrição do código do resultado 
* @var string
*/
public $resultado_txt;
}

 

Para usar:

 

<?php
try {
$busca = new BuscarCEP();
var_dump( $busca->buscaLogradouro( 'Ituverava' , 'Franca' ) );
} catch ( RuntimeException $e ){
printf( 'Opz, Erro[ %d ]: %s' , $e->getCode() , $e->getMessage() );
}

 

Tanto o método buscaLogradouro quanto o método buscaCEP devolvem uma matriz de resultados, que você poderá iterar segundo a necessidade.

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

OOOMMMMGGGG... http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Valewwwwwwwwwwwwwww João Batistaa... tu é f*** velho!!!

 

Funcionou certinho, agora só vou formatar o resultado aqui pra colocar no form corretamente ^^

 

Abraçooooos meu amigoooo, vlw mesmo.

 

Meu aniversário é em novembro 27, mas aceito esse teu presente antecipado ^^, não vou esquecer no dia... :D

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigos!

 

fui tentar usar esse código gerou o seguinte erro --> Fatal error: Class 'BuscarCEP' not found

tenho certeza que não estou sabendo como implementar, pois não tenho muita experiência em php!

Poderiam me ajudar por favor!

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.