Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Usunięcie z każdego wiersza pliku wszystkiego, aż wystąpi "556", ale bez usuwania "556"
.Wojtek
post 13.02.2014, 01:06:20
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 22.09.2009

Ostrzeżenie: (0%)
-----


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. }


Ten post edytował .Wojtek 13.02.2014, 01:13:11
Go to the top of the page
+Quote Post
sowiq
post 13.02.2014, 01:14:00
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Wystarczą Ci dwie funkcje - strpos + substr.
Go to the top of the page
+Quote Post
Crozin
post 13.02.2014, 01:15:20
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
.Wojtek
post 13.02.2014, 01:27:26
Post #4





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 22.09.2009

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Crozin
post 13.02.2014, 01:47:01
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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ć.

Ten post edytował Crozin 13.02.2014, 01:47:31
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 00:19