2010-10-28 4 views
2

J'ai un très gros fichier texte, j'utilise fgets() pour obtenir le contenu du fichier ligne par ligne. mais j'ai besoin de supprimer du texte du fichier si certaines conditions sont remplies.supprimer les lignes après fgets() si la condition est remplie dans php

ex:

bonjour monde am numéro chaîne 1 bonjour monde am numéro de chaîne 2

bonjour chaîne am monde Chaîne am monde bonjour B

permet de dire une condition est remplie dans la chaîne 1, alors je veux supprimer les chaînes 1 et 2, mais ne rien faire à la chaîne A et B

Répondre

7
  1. Ouvrez ce très grand fichier texte pour la lecture. Appelez ce fichier 1.
  2. Ouvrez un nouveau fichier pour l'écriture. Appelez ce fichier 2.
  3. Lisez une ligne du fichier 1.
  4. Vérifiez si la ligne satisfait vos conditions. Si vous voulez conserver la ligne, écrivez-la dans le fichier 2.
  5. Si vous voulez jeter la ligne, ne faites rien.
  6. Lire une autre ligne du fichier 1. Laver, rincer, répéter.
  7. Lorsque vous avez terminé, supprimer le fichier 1, et renommer le fichier 2 au fichier 1. (Assurez-vous de tester plusieurs fois avant de le faire - ce n'est pas réversible!)
+2

En d'autres termes: vous pouvez Ne supprimez pas une ligne du milieu d'un fichier sans réécrire le fichier entier. –

+0

Oui, comme l'a dit @Marc B, si vous supprimez 10 octets du milieu d'un fichier, tout ce qui suit ce point doit être décalé de 10 octets vers la gauche. Pourrait aussi bien créer un nouveau fichier. – kijin

Questions connexes