Jump to content


Photo

Problemas Urgentes Sobrea A Função Eregi


  • Faça o login para participar
2 replies to this topic

#1 julianomf

julianomf

    Turista

  • Usuários
  • 35 posts
  • Sexo:Não informado
  • Localidade:Curitiba - Paraná
  • Interesses:O meus interesses são que alguém responda minhas dúvidas em javascript que não conheço nada e em php onde sou iniciante

Posted 06/06/2003, 10:49

Gostaria de peger alguns dados de uma tabela que fornece os valores da bolsa de valores, mas quando faço ele pega os primeiros valores que contenham aquela característica por exemplo:

No site onde busco tem um determinado valor como;

0,36% ou 2002

mas gostaria de pegar o valor que está na tabela que seria;

0,45% ou 4567

Ou seja essa função esta fazendo que ele pegue as seguintes strings que contenham:

1° caso:-?[0-9],[0-9]{2};
2° caso: [0-9]{4};

Explicando:

No primeiro caso ele deve fazer com que a expressão regular pegue uma astring que contenha - ou não seguido de uma nuúmero entre 0 a 9 separado por vírgula seguido de dois números entre 0 a 9 aquele {2}
significa que eu quero que ele repita somente 2 vezes.

No segundo cado quero que ele pegue 4 números entre 0 a 9 {4} siginifica que eu quero que ele repita somente 4 vezes.

Só que o problema é que ele pega o a primeira string que contenha essas informações e não é isso que eu quero gostaria de que ele pegasse os valores que estão na primeira tabela da bolsa de valores.

Abaixo o site que refiro sobre o meu problema,e o script:

Gostaria de que alguém me ajuda-se o quanto antes e agradeceria se solucina-se o meu problema.

Invest

<?
error_reporting(15);

if(!$fp=fopen("http://www.investnews.net/acoes_online/","r" )) {
    echo "Erro ao abrir a página de cotação";
    exit;
}

$conteudo = '';
while(!feof($fp)) { // leia o conteúdo da página
   $conteudo .= fgets($fp,1024);
}
fclose($fp);
$conteudo = strip_tags($conteudo);
eregi("([0-9]{5})",$conteudo,$saida);
list($lixo,$comercial) = $saida;
echo "IBovespa: <b>$comercial</b><br>";

eregi("(-?[0-9],[0-9]{2})",$conteudo,$saida);
list($lixo,$h_comercial) = $saida;
echo "Variação: <b>$h_comercial</b><br>";
?>


<?
error_reporting(15);

if(!$fp=fopen("http://www.investnews.net/acoes_online/","r" )) {
    echo "Erro ao abrir a página de cotação";
    exit;
}

$conteudo = '';
while(!feof($fp)) { // leia o conteúdo da página
   $conteudo .= fgets($fp,1024);
}
fclose($fp);
$conteudo = strip_tags($conteudo);
eregi("([0-9]{4})",$conteudo,$saida);
list($lixo,$paralelo) = $saida;
echo "IBX: <b>$paralelo</b><br>";

eregi("(-?[0-9],[0-9]{1})",$conteudo,$saida);
list($lixo,$h_paralelo) = $saida;
echo "Variação: <b>$h_paralelo</b><br>";

?>


<?
error_reporting(15);

if(!$fp=fopen("http://www.investnews.net/acoes_online/","r" )) {
    echo "Erro ao abrir a página de cotação";
    exit;
}

$conteudo = '';
while(!feof($fp)) { // leia o conteúdo da página
   $conteudo .= fgets($fp,1024);
}
fclose($fp);
$conteudo = strip_tags($conteudo);
eregi("([0-9]{4})",$conteudo,$saida);
list($lixo,$turismo) = $saida;
echo "IEE: <b>$turismo</b><br>";

eregi("(-?[0-9],[0-9]{2})",$conteudo,$saida);
list($lixo,$h_turismo) = $saida;
echo "Variação: <b>$h_turismo</b><br>";

?>

<?
error_reporting(15);

if(!$fp=fopen("http://www.investnews.net/acoes_online/","r" )) {
    echo "Erro ao abrir a página de cotação";
    exit;
}

$conteudo = '';
while(!feof($fp)) { // leia o conteúdo da página
   $conteudo .= fgets($fp,1024);
}
fclose($fp);
$conteudo = strip_tags($conteudo);
eregi("([0-9][0-9][0-9][0-9][.][0-9]{2})",$conteudo,$saida);
list($lixo,$turismo) = $saida;
echo "ITEL: <b>$turismo</b><br>";

eregi("(-?[0-9][.][0-9]{4})",$conteudo,$saida);
list($lixo,$h_turismo) = $saida;
echo "Variação: <b>$h_turismo</b><br>";

?>

Juliano

#2 Guilherme Blanco

Guilherme Blanco

    Loading...

  • Conselheiros
  • 891 posts
  • Sexo:Masculino
  • Localidade:São Carlos - SP/Brasil
  • Interesses:Programação Web e minha namorada (Maria Camila).

Posted 30/06/2003, 09:11

Você precisa localizar o ponteiro do arquivo para poder avaliar sua expressão regular.

Se você buscar do jeito que você está falando, ele busca ocorrências que coincidam com o que você quer, e não necessariamente com a localização exata.

Uma alternativa seria você utilizar a Perl Regular Expression (PRE) com um trecho de código anterior à entrada de valores desejada e posterior.

Nisso, você captura os dados da tabela que você quer... posteriormente, utilize o código que você fez e aponte para ele buscar dentro desta string de retorno, e ele exibirá os resultados desejados.

Por exemplo...
O site possiu os dados inseridos numa tabela e esta tabela dentro de um DIV... exemplo:

<div id="cotacoes">
  <table ...>
    <tr>
      <td ...>Valor 1</td>
      <td ...>Valor 2</td>
    </tr>
  </table>
</div>

Você precisa pegar o valor1 e o valor 2.
Para isto, utilize:

/\s*<div\s+id\s*=\s*\"cotacoes\"\s*>\n[.*]\n\s*</div>/

Ele deverá retornar isto aqui:
<table ...>
<tr>
<td ...>Valor 1</td>
<td ...>Valor 2</td>
</tr>
</table>

Aí, aplique sua expressão regular e você obterá o Valor1 e o Valor2 como resposta.

Grato,
<script language="WebFórum">
// Dados:
Nome("Guilherme Blanco");
Localidade("São Carlos - SP/Brasil");
Cargo("Manutenção");
</script>

#3 victormangia

victormangia

    Doutor

  • Usuários
  • 783 posts
  • Sexo:Masculino
  • Localidade:barra mansa - rj

Posted 06/05/2005, 16:27

vc consegui terminar essa função?? estou precisando fazer uma função similar, tem como vc me passar o código??




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq