Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Usunięcie z każdego wiersza pliku wszystkiego, aż wystąpi "556", ale bez usuwania "556"
Forum PHP.pl > Forum > Przedszkole
.Wojtek
Chciałbym z pliku tekstowego z każdego wiersza pliku usunąć wszystko, aż wystąpi ciąg znaków "556", ale bez usuwania wszystkiego od "556". Plik ma rozszerzenie .txt.

Plik przed zmianą:
Kod
        AMB1   5566853.64   3719668.91        0.000
        AMB2   5566853.08   3719670.14        0.000
        AMB3   5566855.10   3719669.41        0.000


Plik po zmianie:
Kod
5566853.64   3719668.91        0.000
5566853.08   3719670.14        0.000
5566855.10   3719669.41        0.000


Wydaje mi się, że muszę odpowiedni kod wkleić w wolną przestrzeń między kodem:
  1. $filename = "dane tabeli.txt";
  2. $handle = fopen($filename, "r+");
  3. if ($handle) {
  4. while (!feof($handle)) {
  5. $buffer = fgets($handle, 4096);
  6.  
  7.  
  8.  
  9. }
  10. fclose($handle);
  11. } else {
  12. die("Błąd otwierania pliku");
  13. }
sowiq
Wystarczą Ci dwie funkcje - strpos + substr.
Crozin
Jeżeli plik nie ma rozmiaru liczonego w dziesiątkach MiB, bądź spora wydajność nie jest jakimś specjalnym priorytetem:
1. wczytujesz plik do tablicy, gdzie każda linia to osobny element: file,
2. sprawdzasz pozycję ciągu "556" w każdej z linii i ucinasz do tego miejsca: foreach + mb_strpos + mb_substr,
3. scalasz wszystko w całość i zapisujesz: imlode + file_put_contents.
.Wojtek
A jeszcze krótkie pytanie. Jak zmienić kod powyżej, żeby nadpisywał mi wiersze pliku? Na razie chciałem spróbować, żeby mi nadpisał wiersz z wartością 1.

  1. <?php
  2. $filename = "dane tabeli2.txt";
  3. $handle = fopen($filename, "r+");
  4. if ($handle) {
  5. while (!feof($handle)) {
  6. $buffer = fgets($handle, 4096);
  7.  
  8.  
  9. $buffer = 1;
  10.  
  11.  
  12. }
  13. fclose($handle);
  14. } else {
  15. die("Błąd otwierania pliku");
  16. }
  17. ?>


Czyli w pliku tekstowym miały by być same:
1
1
1

Co robię źle?
Crozin
1. Zmienna $buffer to lokalna zmienna w PHP, która nie ma nic wspólnego z Twoim plikiem. Odczytujesz dane z pliku, ale nigdy nic nie zapisujesz).
2. Podałem Ci już kompletny zestaw funkcji, z których będziesz musiał skorzystać. Kod napisany przy ich wykorzystaniu będzie niewspółmiernie prostszy i łatwiejszy do zrozumienia, przede wszystkim dla Ciebie. Poczytaj o nich, spróbuj je wykorzystać.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.