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?
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.
$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);
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