Leitura de arquivo com PHP

3 respostas
G

Bom dia pessoal!!!

Preciso ler um arquivo usando PHP, este arquivo pode ser aberto em modo texto, porém o problema é a forma a qual o sistema gera o nome do arquivo veja exemplo: LVXXXXXX.CCC --> Onde LV é fixo, todos os arquivos iniciam com LV --> XXXXXX é a data na qual foi gerado o arquivo e CCC é o número do computador que gerou o arquivo.
Sendo assim tem um diretório chamado LOG lotado de arquivos com nomes diferente e extensões diferentes exemplo:
Diretorio Log com os arquivos

LV020910.012
LV030910.009
LV030910.011
LV120910.001

O problema é: como efetuar a leitura de um arquivo gerado automaticamente pelo sistema onde seu nome muda todos os dias e sua extensão tambem muda, ou seja tanto o nome do arquivo quanto a extensão são variáveis.

Por favor me ajudem, acredito que tenho de fazer uma varredura no diretório e mudar tanto o nome quanto a extensão, mas como fazer isso?

Ficarei muito grato por qualquer ajuda.
Obrigado

3 Respostas

douglaskd

<?php $dir = '/pastaquedesejabuscar'; $files = scandir($dir, 1); print_r($files); ?>
Dessa forma $files será um Array contendo o nome de todos os arquivos do diretório, assim que tiver o nome dos arquivos vc faz um for usando um código similar a esse:

$inicial = substr(“LV020910.012”, 0, -10); // retornará LV

ahh, pra mudar o nome do arquivo você pode usar a função:

rename("/tmp/Arquivo antigo.txt", “/home/user/login/docs/Novo Arquivo.txt”);

essa função altera o nome do arquivo e ainda pode mudar o arquivo de diretório… assim os que foram renomeados ficam em um diretório separado.

tem uma função parecida tbm chamada copy:
copy("/tmp/Arquivo antigo.txt", “/home/user/login/docs/Novo Arquivo.txt”); // somente copia o arquivo para outro diretório

não vou aprofundar muito, porque talvez não seja isso que você precisa…

G

Obrigado pela dica em parte deu certo, porém eu preciso buscar a linha T03 do arquivo, criei um script assim:

<?php $arq = fopen("lixo.txt", 'a+'); preg_match('/[0-9]{6} T03.*/',$arq,$x); echo '
';
print_r($x);
echo $atual = fgets ($arq);

O conteudo do arquivo lixo é esse abaixo:

090320 T01 7894000200019 0000100000000000499000000000049900000000000000000000000L00200700142010091314:28
090320 T01 7894000200019 0000100000000000499000000000049900000000000000000000000L00200700142010091314:28
090320 T03                         0000000000000001000000000000100000000000000000000000000L00200700142010091314:28

O resultado esperado era toda linha T3:
090320 T03 0000000000000001000000000000100000000000000000000000000L00200700142010091314:28

Porém recebi a linha T01:
090320 T01 7894000200019 0000100000000000499000000000049900000000000000000000000L00200700142010091314:28

Eu só preciso capturar a linha T03

O que esta errado?

Desde de já obrigado a todos!!! 

Ir para o topo
douglaskd

$arq não é string…antes disso você deve ler o arquivo:

<?php
        $arq = fopen("lixo.txt", "r");
        while (!feof($arq)){
                 $conteudoLixo .= fgetc($arq);
        }
        fclose($arq);

        preg_match('/[0-9]{6} T03.*/',$conteudoLixo,$x);
        echo '<pre>';
        print_r($x); // x[0] acessa o resultado
?>

aqui no trabalho não tenho php instalado então não testei, mais acho que funciona…

Criado 13 de setembro de 2010
Ultima resposta 24 de set. de 2010
Respostas 3
Participantes 2