JamesM Postado Setembro 5, 2010 Denunciar Share Postado Setembro 5, 2010 OláTenho um código que le o conteúdo de um arquivo .txt coloca num array e imprime na tela..<? $arquivo = 'log.txt'; $linhas = file($arquivo); for($i = 0; $i < count($linhas); $i++){ echo rtrim($linhas[$i]) . "<br>"; } ?> Meu arquivo esta assim: 30-08-10;17:02:02;302;1 31-08-10;17:04:01;404;0 01-09-10;17:06:02;302;1 02-09-10;17:08:02;302;1 03-09-10;17:10:02;302;1 04-09-10;17:12:01;302;1Como faço pra somente meu array listar as "linhas comletas" que contem as dataspor exemplo: 01-09-10 a 03-09-10a impressao sai assim01-09-10;17:06:02;302;1 02-09-10;17:08:02;302;1 03-09-10;17:10:02;302;1???é isso.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romero Dias Postado Setembro 5, 2010 Denunciar Share Postado Setembro 5, 2010 (editado) Parceiro, Para resolver este problema, será necessário utilizar a função strtotime();E ao tranferir as informaçoes do TXT para o array, aplicar uma formatação nesta data. Pois, se você está comparando somente as datas, guarde o valor no formato date("d-m-Y"); sem o valor da hora.Fiz um exemplo abaixo, faça um teste ai.<?php //Configura o timezone a ser utilizado date_default_timezone_set('America/Sao_Paulo'); $arrData = array(); $dtInicial = strtotime("01-09-2010"); $dtFinal = strtotime("03-09-2010"); //Atribui ao array os valores $arrData = array( strtotime("30-08-2010"), strtotime("31-08-2010"), strtotime("01-09-2010"), strtotime("02-09-2010"), strtotime("03-09-2010"), strtotime("04-09-2010") ); //Percorre o array verificando se o valor corresponde a expressão FOR($i=0; $i < COUNT($arrData); $i++){ if($dtInicial <= $arrData[$i] && $dtFinal >= $arrData[$i]){ echo date('d/m/Y',$arrData[$i]); } } ?>Abraço Editado Setembro 5, 2010 por Romero Dias Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JamesM Postado Setembro 5, 2010 Autor Denunciar Share Postado Setembro 5, 2010 Romero,obrigado pela resposta..eu tenho que isolar as datas em outro array?depois como eu imprimo as linhas completas? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romero Dias Postado Setembro 5, 2010 Denunciar Share Postado Setembro 5, 2010 (editado) Ao gerar esse TXT, existe a possibilidade da data ficar no formato d-m-Y ?Ou seja, da forma abaixo:30-08-2010 31-08-2010 01-09-2010 02-09-2010 03-09-2010 04-09-2010 Se as datas já vierem assim, resta então atribuir-las a um array. for($i = 0; $i < count($linhas); $i++){ $arrData[] = rtrim($linhas[$i]); }Se não for possível, teremos que criar uma função para tratar essa data, convertendo-a para d-m-Y.Abraço Editado Setembro 5, 2010 por Romero Dias Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JamesM Postado Setembro 5, 2010 Autor Denunciar Share Postado Setembro 5, 2010 na minha função a variavel data recebe.... $data = date("d-m-y");pra ficar com ano completo tem que fazer de outra forma? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romero Dias Postado Setembro 5, 2010 Denunciar Share Postado Setembro 5, 2010 Para o ano ser preenchido com 4 números, Ex.: 2010, o Y tem que ser maiúsculo na definição do formato da data;$data = date("d-m-Y"); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JamesM Postado Setembro 5, 2010 Autor Denunciar Share Postado Setembro 5, 2010 (editado) Para o ano ser preenchido com 4 números, Ex.: 2010, o Y tem que ser maiúsculo na definição do formato da data;$data = date("d-m-Y");sério... vou mudar :) Editado Setembro 5, 2010 por JamesM Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JamesM Postado Setembro 5, 2010 Autor Denunciar Share Postado Setembro 5, 2010 mudei a data;primeiro eu faco um for, com explode as linhas, e depois um if com a data inicial e final? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romero Dias Postado Setembro 5, 2010 Denunciar Share Postado Setembro 5, 2010 Correto,você recupera as datas do TXT colocando-as em um array, para cada data inserida no array, converta para timestamp com a função: strtotime();. Faça de acordo com o exemplo que te passei.faça os testes! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 JamesM Postado Setembro 5, 2010 Autor Denunciar Share Postado Setembro 5, 2010 Romero não conhecia a função rtrim.. showwwfuncionou obrigado!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
JamesM
Olá
Tenho um código que le o conteúdo de um arquivo .txt coloca num array e imprime na tela..
Meu arquivo esta assim:Como faço pra somente meu array listar as "linhas comletas" que contem as datas
por exemplo: 01-09-10 a 03-09-10
a impressao sai assim
01-09-10;17:06:02;302;1
02-09-10;17:08:02;302;1
03-09-10;17:10:02;302;1
???
é isso..
Link para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.