1
Good evening I have a code in php to get the data of a given page, I use the initial template and it works I’m trying to use it in another site like this ai in the template but gives an error:
E_NOTICE : type 8 -- Undefined offset: 3 -- at line 68
E_NOTICE : type 8 -- Undefined offset: 2 -- at line 68
E_NOTICE : type 8 -- Undefined offset: 1 -- at line 68
E_NOTICE : type 8 -- Undefined offset: 0 -- at line 68
Below is the code I have no idea how to solve, thank you.
<?php class cotacoes { public function pegaValores() {
if(!$fp=fopen("http://www.valor.com.br/valor-data/moedas" ,"r" )) {
echo "Erro ao abrir a página de cotação" ;
return(0);
}
//variáveis de classe
$arrayValores = array();
//inicio do processamento - ler página
$uolHTML = "";
while(!feof($fp)) { // leia o conteúdo da página, uma linha por vez, armazene na variável uolHTML
$uolHTML .= fgets($fp);
}
fclose($fp);
//array contendo as expressoes regulares que indicam cada moeda
$patterns = array(
"dolarComercial" => "/table-data valor_tabela.*Dólar Comercial/",
"dolarTurismo" => "/table-data valor_tabela.*Dólar Turismo/"
);
$uolHTML = preg_replace("/id=.block-valor_data_blocks-dolar-euro-full./", "", $uolHTML);
$uolHTML = preg_replace("/<tr>/", "\n<tr>", $uolHTML); //acrescentar quebra de linha
$uolHTML = preg_replace("/<td>/", "\n<td>", $uolHTML); //acrescentar quebra de linha
//loop para cada moeda
while( list($moeda, $pattern) = each($patterns) ) {
$arrayHTML = explode("\n", $uolHTML);
//loop por cada linha da pagina HTML
while ( list($indice, $linha) = each($arrayHTML) ) {
//se bloco HTML casa com a pattern da moeda do looping atual...
if (preg_match($pattern, $linha)) {
//print "Encontrei '$pattern' em: $linha\n\n";
//ler proxima linha
$linha = $arrayHTML[++$indice];
//pegar cotacao compra
preg_match("/<td>(.*)<\/td>/", $linha, $valor);
$compra = substr($valor[1],0,4);
//ler proxima linha
$linha = $arrayHTML[++$indice];
//pegar cotacao venda
preg_match("/<td>(.*)<\/td>/", $linha, $valor);
$venda = substr($valor[1],0,4);
//atribuindo valores ao array de retorno
array_push($arrayValores, $compra, $venda);
}
} // fim while
} // fim while
return($arrayValores);
} } $uol = new cotacoes(); list($dolarComercialCompra, $dolarComercialVenda, $dolarTurismoCompra, $dolarTurismoVenda) = $uol->pegaValores(); print ($dolarComercialCompra); ?>
The line with the error in question would be the
list($dolarComercialCompra, $dolarComercialVenda, $dolarTurismoCompra, $dolarTurismoVenda) = $Uol->pegaValores();
If anyone knows anything
Solved your doubt?
– durtto