web-dev-qa-db-fra.com

Comment remplacer le contenu du fichier par un nouveau contenu en PHP?

J'ai essayé d'utiliser fopen, mais j'ai seulement réussi à ajouter du contenu en fin de fichier. Est-il possible d'écraser tout le contenu avec du nouveau contenu en PHP?

35
newbie

Utilisez file_put_contents()

file_put_contents('file.txt', 'bar');
echo file_get_contents('file.txt'); // bar
file_put_contents('file.txt', 'foo');
echo file_get_contents('file.txt'); // foo

Si vous êtes coincé avec fopen() , vous pouvez également utiliser les modes w ou w+:

'w' Ouvert en écriture uniquement; Placez le pointeur de fichier au début du fichier et tronquez le fichier à une longueur nulle. Si le fichier n'existe pas, essayez de le créer.

'w +' Ouvert à la lecture et à l'écriture; Placez le pointeur de fichier au début du fichier et tronquez le fichier à une longueur nulle. Si le fichier n'existe pas, essayez de le créer.

65
Mike B
$fname = "database.php";
$fhandle = fopen($fname,"r");
$content = fread($fhandle,filesize($fname));
$content = str_replace("192.168.1.198", "localhost", $content);

$fhandle = fopen($fname,"w");
fwrite($fhandle,$content);
fclose($fhandle);
1
Ram Pukar

Ma méthode préférée utilise fopen, fwrite et fclose [cela coûtera moins de temps CPU]

$f=fopen('myfile.txt','w');
fwrite($f,'new content');
fclose($f);

Avertissement pour ceux qui utilisent file_put_contents

Cela va affecter énormément les performances, par exemple [sur la même classe/situation] file_get_contents aussi: si vous avez un GRAND FICHIER, il lira tout le contenu en un seul coup et cette opération peut prendre beaucoup de temps temps d'attente

0
PYK