login  Naam:   Wachtwoord: 
Registreer je!
 Forum

1 regel verwjideren

Offline Rens - 25/10/2007 14:17
Avatar van RensGouden medaille

Crew algemeen
Hoi,

Ik zit te bedenken hoe ik een aangegeven regel uit een bestandje kan verwijderen.
Dit zou natuurlijk kunnen door het hele bestand te doorlopen, en vervolgens die regel die matcht er uit te filteren, en alles opnieuw in het bestand te zetten.

Maar ik gok er op dat het ook makkelijker moet kunnen.

Iemand die het me kan vertellen?

8 antwoorden

Gesponsorde links
Offline citroen - 25/10/2007 14:37
Avatar van citroen Onbekend misschien via shell_exec en vi
http://www.bo.i...ode59.html
Offline Rens - 25/10/2007 15:11
Avatar van Rens Gouden medaille

Crew algemeen
Maar dan weerkt het alleen op Linux, en het moet gewoon platform-onafhankelijk zijn...
Offline citroen - 25/10/2007 15:27 (laatste wijziging 25/10/2007 15:33)
Avatar van citroen Onbekend dan lijkt me de oplossing de ge zelf defineerde de meeste logische...

  1. <?php
  2. $filename = "file.txt"; // File which holds all data
  3. $rowToDelete = 50; // This is line need to be deleted
  4.  
  5. $arrFp = file( $filename ); // Open the data file as an array
  6. $numLines = count( $arrFp ); // Count the elements in the array
  7.  
  8. $fp = fopen( $filename, "w" ); // Open the file for writing
  9. for($i=0; $i<$numLines; $i++) // Overwrite the content except the line to be deleted
  10. {
  11. if($i != ($rowToDelete-1) )
  12. fwrite($fp, $arrFp[$i]);
  13. }
  14. fclose( $fp ); // Close the file
  15. ?>
Offline delta_004 - 25/10/2007 16:54 (laatste wijziging 25/10/2007 16:54)
Avatar van delta_004 Onbekend Bron?

De nieuwe file is niet goedingedeeld met regels als je het op deze methode doet...
Offline Rik - 25/10/2007 17:16
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Als je fwrite() gebruikt met w haalt hij elke keer het bestand leeg en zet de nieuwe regel er voor in de plaats.

Dan kan je denk ik net zo gemakkelijk dit doen (niet getest):
  1. <?php
  2. $sFileName = 'file.txt';
  3. $iRowToDelete = 50;
  4. $sEol = "\n";
  5.  
  6. $sFile = file_get_contents($sFileName);
  7. $aFile = explode($sEol, $sFile);
  8. unset($aFile[$iRowToDelete]);
  9. $sFile = implode($sEol, $aFile);
  10.  
  11. file_put_contents($sFileName, $sFile);
  12. ?>
Als je geen php 5 hebt moet je fopen, fwrite en fclose gebruiken ipv file_put_contents, maar dat weet je waarschijnlijk wel.  
Offline Rens - 25/10/2007 17:23
Avatar van Rens Gouden medaille

Crew algemeen
Bedankt voor de reacties, maar zo ver was ik ook al...
Ik vroeg juist naar een andere (makkelijkere) manier.

Maar toch bedankt 
Offline Rik - 25/10/2007 17:48
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Je zal toch het hele bestand in php moeten laden voordat je er wat mee kunt doen lijkt me. Want anders weet php toch ook niet welk stukje hij uit het bestand moet halen?
Offline ikkedikke - 25/10/2007 18:12
Avatar van ikkedikke PHP expert http://nl2.php.net/fseek
hier kun je misschien naar kijken
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.189s