Ir para conteúdo

POWERED BY:

Arquivado

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

ricardcristian

[Resolvido] Pegando dados das Loterias

Recommended Posts

Autor: Ricard CristianData: 29-11-03 20:24Alguém poderia me ajudar a resolver este problema, pois sou novato em PHP:- Gostaria de pegar os resultados das loterias da Caixa:Mega Sena, Loto Fácil, Lotomania, QuinaDupla Sena.O que está acorrendo é o seguinte: Eu pego os dados da Mega Sena e Quina (ok!!), pois estes dados estão em uma única linha. Mas as outras, que os resultados estão divididos em outras linhas (pois existem as tags html <br>,<td>...etc)eu não consigo pegar... o arquivo segue abaixo com mais explicações:<a href="?funcao=mega">Mostra Mega Sena</a><br><? if ($funcao == "mega") {$lines = file ('http://www1.caixa.gov.br/loterias/resultados/asp/megasena.asp');foreach ($lines as $line_num => $line) {$regex = "([0-9]{2}) - ([0-9]{2}) - ([0-9]{2}) - ([0-9]{2}) - ([0-9]{2}) - ([0-9]{2})";$concurso = "número ([0-9]{3})";// se encontrado, coleto o que preciso$found = ereg($regex,$line,$regs);$found2 = ereg($concurso,$line,$con);}echo "Concurso $con[0]<br>";echo "Sorteio: $regs[0]";//aqui funciona beleza... pois leu os dados de uma única linha}?><br><a href="?funcao=lotofacil">Mostra Loto Fácil</a><br><? if ($funcao == "lotofacil") {$lines = file ('http://www1.caixa.gov.br/loterias/resultados/asp/lotofacil.asp');foreach ($lines as $line_num => $line) {$regex = "([0-9]{2}) - ([0-9]{2}) - ([0-9]{2}) - ([0-9]{2}) - ([0-9]{2})";$concurso = "número ([0-9]{1,3})";$found = ereg($regex,$line,$regs);$found2 = ereg($concurso,$line,$con);}echo "Concurso $con[0]<br>";echo "Sorteio: $regs[0]";//aqui começa o problema...como irei ler as próximas linhas, já que elas estão quebradas com tags html (<br>,<td>...etc)// pensei em usar um array pra ler as linhas seguintes, mas não consegui... também tem o problema de mostrar por ordem de sorteio e ordem crescente.}?><br><a href="?funcao=lotomania">Mostra Lotomania</a><br><? if ($funcao == "lotomania") {$lines = file ('http://www1.caixa.gov.br/loterias/resultados/asp/lotomania.asp');foreach ($lines as $line_num => $line) {$regex = "([0-9]{2}) - ([0-9]{2}) - ([0-9]{2}) - ([0-9]{2}) - ([0-9]{2}) - ([0-9]{2}) - ([0-9]{2}) - ([0-9]{2}) - ([0-9]{2}) - ([0-9]{2})";$concurso = "número ([0-9]{3})";$found = ereg($regex,$line,$regs);$found2 = ereg($concurso,$line,$con);}//idem a linha 33 echo "Concurso $con[0]<br>";echo "Sorteio: $regs[0]";}?><br><a href="?funcao=quina">Mostra Quina</a><br><? if ($funcao == "quina") {$lines = file ('http://www1.caixa.gov.br/loterias/resultados/asp/quina.asp');foreach ($lines as $line_num => $line) {$regex = "([0-9]{2}) - ([0-9]{2}) - ([0-9]{2}) - ([0-9]{2}) - ([0-9]{2})";$concurso = "número ([0-9]{3})";$found = ereg($regex,$line,$regs);$found2 = ereg($concurso,$line,$con);}echo "Concurso $con[0]<br>";echo "Sorteio: $regs[0]";}?><br><a href="?funcao=duplasena">Mostra Dupla Sena</a><br><? if ($funcao == "duplasena") {$lines = file ('http://www1.caixa.gov.br/loterias/resultados/asp/duplasena.asp');foreach ($lines as $line_num => $line) {$regex = "([0-9]{2}) - ([0-9]{2}) - ([0-9]{2}) - ([0-9]{2}) - ([0-9]{2}) - ([0-9]{2})";$concurso = "número ([0-9]{3})";$found = eregi($regex,$line,$regs);$found2 = ereg($concurso,$line,$con);} //idem a linha 33echo "Concurso $con[0]<br>";echo "Sorteio: $regs[0]";}?>Desde já, agradeço a atençãoRicardoObs: Não vi se a Caixa tem algum script de feed, por isso que estou pedindo ajuda, para aprimorar mais meus conhecimentos sobre PHP....

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, acho q entendi o q você quer, não ta conseguindo pegar os resultados q veem em mais de uma linha neh?

bom, eu fiz o esqueminha da lotomania pra você ver como se faz, o resto eh com você...

 

Eis o código:

<?

 

$lines = implode("",file("http://www1.caixa.gov.br/loterias/resultados/asp/lotomania.asp"));

 

preg_match_all('/(\d\d\s{19,22}\-\s){9}(\d\d)/',$lines,$sorteios);

preg_match_all('/\d{3}.{11}\d{1,2}\/\d{1,2}\/\d{4}/',$lines,$concursos);

list($numero,$data) = explode("</b> (",current($concursos[0]));

list($num1A,$num1B,$num2A,$num2B) = $sorteios[0];

 

echo "Concurso número: $numero ($data) <br><br>";

echo "Resultado:<br> $num1A <br> $num1B <br><br>";

echo "Resultado: (ordem de sorteio)<br> $num2A <br> $num2B";

 

?>

A 1a coisa q você tem que fazer eh parar de ficar pulando linha por linha com foreach, isso eh perda de tempo.

2a coisa eh ler mto sobre Regular Expressions, neste caso eu usei o "preg" q é a versão "perl" do ereg q você usou, mas basicamente eh a mesma coisa. Aqui tem um tuto bacana, além do help encontrado no manual do php

 

vou detalhar o q o 1o preg_match faz:

 

preg_match_all('/(\d\d\s{19,22}\-\s){9}\d\d/',$lines,$concursos);

 

Procura por 9 grupos de (2 digitos + de 19 a 22 espaços + hífen + 1 espaço), seguido por 2 digitos.

 

É isso aih, agora divirta-se :D

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.