Advertisement
Guest User

Pegar CEP (XPath)

a guest
Jan 24th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.24 KB | None | 0 0
  1. <?php
  2.  
  3. function get_cep($cep) {
  4.     $data = [
  5.         'cepEntrada' => $cep,
  6.         'metodo' => 'buscarCep',
  7.     ];
  8.  
  9.     $data = http_build_query($data);
  10.  
  11.     $curl = curl_init('http://m.correios.com.br/movel/buscaCepConfirma.do');
  12.     curl_setopt($curl, CURLOPT_POST, true);
  13.     curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
  14.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  15.  
  16.     $html = curl_exec($curl);
  17.     curl_close($curl);
  18.  
  19.     $doc = new DOMDocument();
  20.     $doc->loadHTML($html);
  21.  
  22.     $xpath = new DOMXpath($doc);
  23.     $elements = $xpath->query('//span[@class="respostadestaque"]');
  24.    
  25.     if (!$elements) {
  26.         return null;
  27.     }
  28.    
  29.     $resultado = (object)[];
  30.  
  31.     // Retira qualquer espaço duplicado dentro dos campos
  32.     $resultado->logradouro = preg_replace('/\s+/', ' ', trim($elements[0]->nodeValue));
  33.     $resultado->bairro = preg_replace('/\s+/', ' ', trim($elements[1]->nodeValue));
  34.     $resultado->localidade = preg_replace('/\s+/', ' ', trim($elements[2]->nodeValue));
  35.     $resultado->cep = preg_replace('/\s+/', ' ', trim($elements[3]->nodeValue));
  36.    
  37.     return $resultado;
  38. }
  39.  
  40. $x = get_cep('97015140');
  41.  
  42. if ($x) {
  43.     var_dump($x);
  44. } else {
  45.     echo "Endereço não encontrado!";
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement