Manipular aquivos txt [RESOLVIDO]

1. Manipular aquivos txt [RESOLVIDO]

Allan
lanzao

(usa Ubuntu)

Enviado em 10/11/2012 - 15:45h

Boa tarde pessoal


Será possível, ler um arquivo php, levar na tela com o número de linhas, e logo após dar opção para deletar a linha correspondente ao número escolhido?

Se for possível fazer isso, podem me dizer qual função faz?


  


2. MELHOR RESPOSTA

Adriano Moreira da Silva
adri3d

(usa Arch Linux)

Enviado em 11/11/2012 - 12:19h

tente ler o arquivo assim


function loadFile($filePath) {
if(file_exists($filePath)){
$handle = fopen($filePath, "r");
$fileBin = fread($handle, filesize($filePath));
return $fileBin;
}else{
die("\n\nfile not found:\n$filePath");
}
}

$txtFile = loadFile("file.txt");

//end of line
$eol = "\n"; //for txt linux/unix
//$eol = "\r\n"; //for txt windows
//$eol = "\r"; //for txt mac

$lines = explode($eol,$txtFile);
$qtlines = count($lines);

//e para testar
print_r($qtlines);
print_r($lines);


3. Re: Manipular aquivos txt [RESOLVIDO]

André
andrezc

(usa Debian)

Enviado em 10/11/2012 - 16:10h

Para manipular um arquivo dessa forma, é necessário que se conheça as funções de manipulação de arquivos. Você vai precisar executar uma rotina de acordo com o que se pede:

- Abrir o arquivo;
- Ler o arquivo;
- Apagar a linha;
- Fechar o arquivo.

As 3 funções fundamentais para manipulação de arquivo na linguagem php são: fopen, fwrite e fclose, que abre, escreve e fecha o arquivo, respectivamente.

Acerca da contagem de linhas, após ler o arquivo, você pode percorrer até a última linha, através de um loop, incrementando uma variável contadora. Veja o exemplo abaixo:

 
<?
$txtFile = fopen ("file.txt", "r");

$lines = 0;

while (!feof ($txtFile)) {
$lines++;
}


Veja que o laço while não pára até que a função feof() retorne true, o que ocorre quando se chega ao fim do arquivo, que é passado como parâmetro desta função, neste caso, referente à variável txtFile. Dentro deste mesmo loop, repare também que a variável line recebe o operador "++", que incrementa uma variável inteira, o que seria similar a isso:


lines = lines + 1;


Sobre apagar a linha, você pode fazer isso de várias formas: dando replace, ou seja, trocando o conteúdo da linha por um espaço vazio, ou destruindo o conteúdo da variável que se refere à linha a ser apagada; neste último caso, você usaria a função unset().

Com isso, acho que você já pode fazer o que quer. Boa sorte.




4. Re: Manipular aquivos txt [RESOLVIDO]

Adriano Moreira da Silva
adri3d

(usa Arch Linux)

Enviado em 10/11/2012 - 17:46h

uma abordagem um pouco diferente da citada a cima


$txtFile = fopen ("file.txt", "r");

//end of line
$eol = "\n"; //for txt linux/unix
//$eol = "\r\n"; //for txt windows
//$eol = "\r"; //for txt mac

$lines = explode($eol,$txtFile);
$qtlines = count($lines);


assim a variavel $lines é um array com todas as linhas, uma em cada posição
e a variavel $qtlines tem o numero total de linhas do txt


5. Re: Manipular aquivos txt [RESOLVIDO]

Allan
lanzao

(usa Ubuntu)

Enviado em 11/11/2012 - 11:30h

Bom dia


Obrigado andrezc e adri3d por me responderem.

Acho que estou executando o código de vocês de maneira errada.



O código do andrezc, o navegador fica pensando bastante tempo e me retorna nada no formulário, eu tirei o carácter "!" do while ele passou, e retornou 0. Acho que ele está entrando em um loop extenso.



O código do adri3d, está me retornando 0 quando dou echo na na variável "$qtlines".


Muito obrigado andrezc e adri3d por tarem me ajudando!


6. Re: Manipular aquivos txt [RESOLVIDO]

Allan
lanzao

(usa Ubuntu)

Enviado em 11/11/2012 - 13:37h

Agora deu certinho adri3d, Obrigado!

e também obrigado andrezc.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts