Ir para conteúdo

POWERED BY:

Arquivado

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

jamesM

Implode

Recommended Posts

Boa noite

To com o seguinte código

ele pega os 7 ultimos registros de um log e os imprime

 

<?php
$quantidade = 7;
$conteudo   = array();
$conteudo   = file('file.log');
$total      = count($conteudo);
$inicio     = ($total - $quantidade)-1;
$pilha      = array();
for($i=$inicio; $i < $total; $i++)
    array_push($pilha, $conteudo[$i]);    
list($log1, $log2, $log3, $log4, $log5, $log6, $log7) = $pilha;
$lista = sprintf('
                    <ul>
                        <li>%s</li>
                        <li>%s</li>
                        <li>%s</li>
                        <li>%s</li>
                        <li>%s</li>
                        <li>%s</li>
                        <li>%s</li>
                    </ul>                    
                 ',$log1, $log2, $log3, $log4, $log5, $log6, $log7);
echo $lista;
?>

saida

 

29-08-10;22:54:21;302;logou 
30-08-10;22:56:01;302;logou 
31-08-10;22:58:02;302;logou 
01-09-10;23:00:02;302;logou 
02-09-10;23:02:01;302;logou 
03-09-10;23:04:01;302;logou 
04-09-10;23:06:01;302;logou 

Alguem me ma uma luz de como armazeno em 7 variaveis somente os "logou" por exemplo, ou as datas..

tem que fazer um explode usando o caracter ;

mas nao sei como

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem um exemplo de como e esse arquivo de log seu ou seja como fica gravado

 

e como você deseja o resultado final pq eu nao entendi nada ainda

 

digamos que o meu arquivo de log seja 1000 linhas identicas a "saida",

ele pega apenas as 7 ultimas e as imprime, como aquela saida.

 

mas eu nao quero que ele imprima a linha completa.. apenas os valores dentro do separador ";"

exemplo

 

 

30-08-10;22:54:21;[color="#FF0000"][b]302[/b][/color];logou 
30-08-10;22:56:01;[color="#FF0000"][b]302[/b][/color];logou 
30-08-10;22:58:02;[color="#FF0000"][b]302[/b][/color];logou 
30-08-10;23:00:02;[color="#FF0000"][b]302[/b][/color];logou 
30-08-10;23:02:01;[color="#FF0000"][b]302[/b][/color];logou 
30-08-10;23:04:01;[color="#FF0000"][b]302[/b][/color];logou 
30-08-10;23:06:01;[color="#FF0000"][b]302[/b][/color];logou 

obs: era pro 302 estar vermelho e negrito, mas nao fico http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

 

 

pegar esses dados em vermnelho

e armazena-los separadamente

 

saida esperada

 

302
302
302
302
302
302
302

em variaveis separadas.

 

e agora :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dependendo como as linhas estão separadas, você pode fazer assim:

 

<?php
...
$x = explode("\r\n", $arquivo); //separa por linhas
foreach ($x as $linha) {
	$separaLinha = explode(';', $linha);
	echo $separaLinha[0].'<br />';
	echo $separaLinha[1].'<br />';
	echo $separaLinha[2].'<br />';
	echo $separaLinha[3].'<br />';
	echo $separaLinha[4].'<br />';
	echo $separaLinha[5];
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

$conteudo = array_reverse(file('file.log'));
// pega o conteudo e inverte ja que você que os ultimos da lista
$a = 0;
foreach ($conteudo as $valores) {
   if ($a < 7) {
       if ($valores) {
           $separa = preg_split('/[;]/i', $valores);
           //  var_dump($separa);
           if ($separa[3] == "logou") {
               echo $separa[2];
           }
           unset($valores);
       }
       $a++;
   }
}
?>

ver se e isso ok

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.