À l'aide de php, comment faire pour insérer un texte sans écraser le début d'un fichier texte
J'ai:
<?php
$file=fopen(date("Y-m-d").".txt","r+") or exit("Unable to open file!");
if ($_POST["lastname"] <> "")
{
fwrite($file,$_POST["lastname"]."\n");
}
fclose($file);
?>
mais il écrase le début du fichier. Comment puis-je faire insérer?
OriginalL'auteur | 2008-09-19
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas entièrement sûr de votre question, vous souhaitez écrire les données, et pas sur-écrire le début d'un fichier existant, ou écrire de nouvelles données sur le début d'un fichier existant, en gardant le contenu existant après?
Pour insérer du texte, sans écrire le début du fichier, vous aurez à ouvrir pour l'ajout (
+
au lieu der+
)Si vous essayez d'écrire le début du fichier, vous aurez à lire le contenu du fichier (voir
file_get_contents
) d'abord, puis rédigez votre nouvelle chaîne de caractères suivie par le contenu du fichier pour le fichier de sortie.L'approche ci-dessus va travailler avec les petits fichiers, mais vous pouvez exécuter dans les limites de la mémoire d'essayer de lire un gros fichier en utilisant
file_get_conents
. Dans ce cas, pensez à utiliserrewind($fichier)
, qui définit le fichier indicateur de position de la poignée vers le début du fichier stream.Remarque lors de l'utilisation de
rewind()
, de ne pas ouvrir les fichiers avec l'a
(oua+
) options:Désolé, je sais que ce sentiment!
Merci. Je voulais dire la dernière.
Eh bien, n'est-il pas exagéré pour les gros fichier ? Je veux dire, file_get_contents copier tout le fichier en mémoire, à droite. C'est ok pour un fichier ini, mais pour un journal... Dans ce cas, une bonne cherchons tous serait-il faire, n'est-ce pas ?
La dernière partie de la réponse est incorrecte. La question est à propos de l'insertion de texte, mais si vous utilisez de retour rapide, vous allez écraser le contenu au début du fichier.
OriginalL'auteur ConroyP
Un exemple de travail pour l'insertion dans le milieu d'un flux de fichier sans les écraser, et sans avoir à charger le tout dans une variable/mémoire:
Compositeur lib pour peut être trouvé ici
OriginalL'auteur oskarth
Vous obtenez le même l'ouverture du fichier pour l'ajout
le problème est que je n'ai pas la réponse à tous lorsque j'ai posté cette près de 10 ans et de 11 min après la question a été fait
OriginalL'auteur Eduardo Campañó
Si vous voulez mettre votre texte au début du fichier, vous devriez lire le contenu du fichier comme:
OriginalL'auteur SeanDowney