• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

vjoe

Editar ficheiro via PHP

18 mensagens neste tópico

Pessoal, alguém me pode demonstrar como editar um ficheiro via PHP?

Por exemplo, suponhamos que eu tenho um ficheiro com o seguinte conteúdo:

Nome: Felisberto

Idade: 35

Como fariam para, via PHP, alterar a idade para 20, por exemplo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
$idd = 32; // a nova idade a pôr no ficheiro.
$nome = 'Lolix'; // o nome (obvio)

$fp = fopen('perfil.txt', 'w');
fwrite($fp, 'Nome: '.$nome.'\nIdade: '.$idd);
fclose($fp);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes por exemplo carregar todo o conteudo do ficheiro para uma variavel, cortar os 2 ultimo caracteres e adicionar a nova idade.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso eu sei fazer. Eu quero editar só o "35". ;)

nao percebi, se sabes fazer o que o djthyrax exemplificou o que é que nao sabes fazer concretamente?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que o djthyrax está a dizer é voltar a carregar todo o conteudo e não trocar só a idade.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Exactamente! ;)

Atenção que o que eu coloquei é só um pequeno "exemplo". O ficheiro "real" vai ser bastante maior e diferente.

Na prática, eu vou ter um formulário para editar o ficheiro. Eu estava a pensar em algo assim:

-encontrar "$nome =" (ou outra variável) no ficheiro

-detectar o espaço após o "=" e avançar para a posição seguinte

-começar a escrever, substituindo o que está lá pelo que foi colocado na inputbox

-quando acabar de escrever, substituir eventuais caracteres por um espaço, até encontrar um espaço (para o caso do novo valor ter menor comprimento que o anterior)

Perceberam a lógica? Agora preciso é que me ajudem a passar para a prática. Não sei como fazê-lo em PHP. :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para leres o ficheiro tens que o carregar para a memoria de qualquer das formas. Não pods enviar um ou dois bytes para dentro do fiecheiro de qualquer das formas.

Isto é questão de milionésimas de segundo. A forma de fazer isso é a que foi indicada pelo djthyrax.  Se o ficheiro for muuuuuuuuuito grande ( o que eu duvido  ) e tecausar alguns problemas de performance entao usa uma base de dados. O php vem com suporte para sqlite embutido, nao precisas de instalar nada.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

$file = "Nome: LOL\nIdade: 14"; // o conteúdo do file (o \n é uma nova linha)

$linhas = explode("\n", $file);
$i = 0;
foreach($linhas as $linha){
$dados = explode(": ", $linha, 2);
if($dados[0] == 'Nome'){
	if($dados[1] == 'LOL'){
		$linhas[$i] = $dados[0].': '.'LOLIX!';
		break;
	}
}
$i++;
}

file_put_contents('./destino.txt', implode("\n", $linhas)); // só disponível em php5. equivale a $fp=fopen('./destino.txt', "w"); fwrite($fp, implode("\n", $linhas)); fclose($fp);

Serve?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Também podes utilizar expressões regulares para fazer isso...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Também podes utilizar expressões regulares para fazer isso...

Eu não domino regex, daí ter dado aquele código. ;)
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Também podes utilizar expressões regulares para fazer isso...

Eu não domino regex, daí ter dado aquele código. :)

Não era para ti ;) era para o tL0z... btw, o teu código parece ser uma boa solução

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Também podes utilizar expressões regulares para fazer isso...

Eu não domino regex, daí ter dado aquele código. :)

Não era para ti :) era para o tL0z... btw, o teu código parece ser uma boa solução

Obrigado, também o vais ripar? ;)
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom trabalho djthyrax. ;)

Também podes utilizar expressões regulares para fazer isso...

Eu não domino regex, daí ter dado aquele código. :P

Não era para ti :) era para o tL0z... btw, o teu código parece ser uma boa solução

Obrigado, também o vais ripar? :)

:eek:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bom trabalho djthyrax. ;)

Thanks. :)

Também podes utilizar expressões regulares para fazer isso...

Eu não domino regex, daí ter dado aquele código. :)

Não era para ti :P era para o tL0z... btw, o teu código parece ser uma boa solução

Obrigado, também o vais ripar? :)

:eek:

@djthyrax

Modifiquei o teu código espero que não leves a mal :P

Porra, até já me ripam o código e o carai! :)

PS: Podes ter acerteza que ainda vou ripar muitos códigos teus  :):P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado, também o vais ripar? ;)

Por acaso estava a pensar em ripar :) :) Mas agora que todos ja sabem não vale a pena =]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pela dica. Estou agora a ver se consigo fazer o que quero. Depois digo se consegui ou não. ;)

O que são expressões regulares?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora