Posts tagged regex
Status Correios
Dec 12th
Meu amigo precisava de uma ajuda para recuperar os status que o Correios gera para as encomendas.
Lembrei que havia feito isso na última empresa que trabalhei e agora resolvi compartilhar.
Não é 100% garantido, pois eu leio via REGEX o source da página ok?
Após recuperar o source HTML da página do Correios via cURL ou file_get_contents, utilizo a seguinte função para tratar o conteúdo e retornar um array contendo os dados do Correios.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <?php /** * Retorna todos os status do Correios para ID enviado * * @param string $id_correios ID do Correios * @return array $array_retorno */ function status_correios( $id_correios ) { $conteudo = file_get_contents('http://websro.correios.com.br/sro_bin/txect01$.QueryList?P_LINGUA=001&P_TIPO=001&P_COD_UNI='.$id_correios); if ( empty($conteudo) ) return false; $array_retorno = array(); preg_match_all( '/<tr>\s*<td[^>]*>(.*)<\/td>\s*<\/tr>/' , $conteudo , $array_regex ); if ( !is_array($array_regex) || count($array_regex) <= 0 ) return false; foreach ( $array_regex[ 1 ] as $key => $linha ) { $foo = explode( '</td><td>' , $linha ); if ( strip_tags( $foo[ 2 ] ) ) { $array_retorno[] = array( strip_tags( $foo[ 0 ] ), strip_tags( $foo[ 1 ] ), strip_tags( $foo[ 2 ] ) ); } } return $array_retorno; } ?> |
ps.: tentei colocar o código fonte completo aqui mas foi humanamente impossível.
Utilizei esse método pois tratava o array com os dados e armazenava em um banco de dados. Caso queria apenas exibir o João Vagner me mostrou esse link.
Dúvidas? Só enviar um email ou perguntar nos comentários.