Apagar o conteúdo de um arquivo .txt - PHP - Fórum iMasters
Apagar o conteúdo de um arquivo .txt
By Gustavo Freitas, June 21, 2005 in PHP
Interesses:PHP, Flash, ActionScript, MySQL...
Seguinte, tenho um form que salva algumas informações num arquivo .txt, eu gostaria de saber, como apagar as informações salvas.
p4ul0c3s4r 0
Cara, basta você pergorrer linha a linha este documento, guardando estas linhas em uma variavel, depois de um str_replace e coloque no lugar do que você quer apagar "" para remover dali o que você deseja.AbraçosPaulo César
Desculpa aew + eu sou meio novato, num entendi muito bem o que você quiz dizer...o lance é que as informações estão no arquivo "file.txt", e num determinado espaço de tempo eu preciso apagar seu conteúdo. Pensei em fazer com o fopen, + não sei como.Tipow:fopen("file.txt", "deleta tudo dentro do arquivo");
simples só abrir o arquivo e salvar o conteudo em branco ou criar um arquivo novo tanto faz
Gustavo, primeiro assim, você quer apagar somente uma parte do texto ou o texto todo? para apagar o texto todo, basta criar um outro arquivo por cima com o fopen mesmo, mas ai você precisa passar o modo correto, tipo assim
fopen(ARQUIVO,MODO)
w Abre um arquivo texto para escrita. Se um arquivo com o mesmo nome existir, será sobrescrito.
a Abre um arquivo texto para anexação. Se o arquivo não existir, será criado.
wb Abre um arquivo binário para escrita. Se um arquivo com o mesmo nome existir, será sobrescrito.
ab Abre um arquivo binário para anexação. Se o arquivo não existir, será criado.
a+ Abre um arquivo texto para leitura/escrita. Se o arquivo não existir, será criado.
ab+ Abre um arquivo binário para leitura/escrita. Se o arquivo não existir, será criado.
Se nao entender isso ai, pq ficou meio embaralhado, de uma olhada neste link http://geocities.yahoo.com.br/sdiasneto/c_int/arquivos.htm
repare no modo Wele verifica se existe o arquivo, se existir, ele apaga o que esta lah e cria um novo em branco.Abraços denovo
eu entendi, fiz da maneira que o Fabyo sugeriu, ficou assim:
[*]<?
[*] fopen("msg.txt", "w+");
[*] Header("Location ok.php");
Ele apagou o conteúdo como eu queria, + não redirecionou a página.
[*]function arquivoSubt($arq,$procura,$sbst)
[*] $arquivo = $arq;
[*] $abri = @fopen($arquivo,"r");
[*] $cntd = @fread($abri,filesize($arquivo));
[*] if (($abri) && ($cntd))
[*] $trat = eregi_replace($procura,$sbst,$cntd);
[*] fclose($abri);
[*] $grav = fopen($arquivo,"r+");
[*] fputs($grav,$trat);
[*] fclose($grav);
[*] echo $trat;
[*] echo 'Arquivo não existe!';
[*]arquivoSubt('arquivo.txt','[a-z]?[?ç*&¨%$#@!,|"-_()=\\.+!\sáàâãéèêíìîóòôõúùû]',' ');
você esta gravanda as paginas com espaço em branco entre os nomes??Header("Location ok.php"); uma dica, coloque sempre um _ entre elas tipoHeader("Location_ok.php"); OK? mas ainda aconselho a usar o js pra isso!AbraçosPaulo
Ta errado isso Header("Location_ok.php"); o Location faz parte da função o certo é assim mesmo:
abra o arquivo e grave o conteudo em branco é simples com poucas linhas você faz isso nao precisa de mais nada
Realmente Fabyo, eu só precisei de uma linha:
[*]//Abre o arquivo para leitura e escrita; coloca o ponteiro do arquivo no
[*]//começo e diminui (trunca) o tamanho do arquivo para zero. Se o arquivo
[*]//não existe, tenta criá-lo.
Nesse caso, gostaria de entender melhor esse procedimento, li muito rapidamente no seu curso de php. Pelo que eu entendi ele abre o arquivo e o diminui para o menor tamanho possível certo? Isso quer dizer que pro arquivo sofrer essa redução ele perderá suas informações?
nao o correto mesmo é você abrir o arquivo e salvar com fwrite com o conteudo vazio
Exemplo, temos um arquivo texto com os seguintes dados:
0|ka@kaw.com|klawdyus
1|wauneys@ig.com|valmir
2|fifi@teteu.com|fiofó
[*]// Vamos inicialmente abrir e receber os dados dos arquivos.
[*]$abre = fopen("arquivo.txt","r");
[*]$dados = fread($abre,filesize("arquivo.txt"));
[*]fclose($abre);
[*]//Vamos agora dividir as linhas, e separar os dados por "\n"
[*]$linhas = explode("\n",$dados);
[*]//agora, supondo que você quer apagar a linha cujo id seja o "1", no caso a segunda linha, então você faz assim:
[*]unset($linhas[1]);
[*]se voce mandar exibir o array, logo após o unset, ele já vai exibir sem a segunda linha, como abaixo.
[*]print_r($linhas);
[*]array(
[*][0]=> 0|ka@kaw.com|klawdyus
[*][2]=>2|fifi@teteu.com|fiofó
[*]);
[*]//Aí, é só você mandar gravar novamente por cima do arquivo atual, por exemplo:
[*]$cria = fopen($arquivo.txt,"w+");
[*]//quando voce abre no modo w+, ele apaga os dados antigos
[*]fwrite(implode("\n",$linhas));
[*]fclose($cria);
[*]Sobrou alguma dúvida?
jcalebe 0
Localização:192.168.0.1
Não sei se com a idade dos tópicos, alguém vai ter algum interesse, mas eu modifiquei o código anterior para apagar o conteúdo de um arquivo mais facilmente. Aí vai:
unset($linhas);
$cria = fopen("database.txt","w+");
<br><br><br><br><br><big><big><center>Arquivo formatado com sucesso.</center></big></big>
Pode colocar na página, que quando ela for aberta, vai apagar o conteúdo do arquivo "database.txt" mantendo seu CHMOD. Aí você pode usar sua criatividade e usar um botão em uma página anterior para chamar essa, ou pode colocar um timer para apagar de tanto em tanto tempo.