Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Odnajdywanie frazy w string'u zapisanym w pliku i zamiana na inną frazę, Jak znaleźć tekst np: "YEAH" w pliku i zamienić go na: Yeah
AmyLokmart
post 5.12.2021, 13:26:19
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 28.11.2021

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


Mam kolejny problem Chłopaki sad.gif Dużo wykonuje działań na plikach i chcę wiedzieć wiele rzeczy, ale czasami stoję w martwym punkcie. Teraz chciałabym znaleźć w tekście, który jest zapisany w pliku konkretną frazę. Dajmy na to, że fraza ta to "YEAH". Potem tą frazę chciałabym zamienić i zapisać plik bez zmian, to znaczy, żeby mi zamieniło znaleziony tekst, zamieniło go na taki jaki chce i zapisało plik bez utraty reszty tekstu, który w tym pliku jest zapisany smile.gif Fiu mam nadzieję, że mnie zrozumiano, bo trochę się napisałam smile.gif

Lubię porządek i mam już spory początek kodu PHP w technologii EC:

  1. $amy_text = "YEAH";
  2. $amy_text_change = "Yeah";
  3. $amy_file = file("date.txt");
  4. // Pokaż prawdziwość kiedy tekst var("amy_text") jest znaleziony
  5. $amy_found = false;
  6. foreach($amy_file as $amy_line) {
  7. if (strpos($amy_line, $amy_text) !== false)
  8. {
  9. $amy_found = true;
  10. // Otwórz plik do odczytu i modyfikuj
  11. $amy_mod_file = "date.txt";
  12. $amy_check_file = fopen($amy_mod_file, 'a');
  13. $amy_data = fread($amy_check_file, filesize($amy_mod_file));
  14. $amy_mod_end = $amy_data->$amy_text_change;
  15. fclose($amy_check_file);
  16. // Otwórz plik do zapisu
  17. $amy_check_file = fopen($amy_mod_file, 'a');
  18. fwrite($amy_check_file, $amy_mod_end);
  19. fclose($amy_check_file);
  20. $amy_status = "Tekst został zmieniony.";
  21. print $amy_status;
  22. }
  23. }
  24. // Jeśli tekst nie został znaleziony wypisz komunikat
  25. if (!$amy_found)
  26. {
  27. $amy_status = "nie znaleziono i nie zamieniono tekstu.";
  28. print $amy_status;
  29. }


Jak ktoś wie to Bardzo bym Prosiła, o podpowiedź co robię źle, że nie działa tak jak chcę sad.gif Z Góry Serdecznie Dziękuję Dobrym Ludziom smile.gif

Ten post edytował AmyLokmart 5.12.2021, 13:32:53
Go to the top of the page
+Quote Post
viking
post 5.12.2021, 13:42:26
Post #2





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Ale po co jeszcze raz otwierasz plik? File tworzy tablicę. Jeśli w niej znajdziesz to podmień słowo w danej linii i na koniec masz tablicę do zapisu ponownego.


--------------------
Go to the top of the page
+Quote Post
AmyLokmart
post 5.12.2021, 14:15:20
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 28.11.2021

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


Przerobiłam trochę swój skrypt na taki:

  1. $amy_text = "YEAH";
  2. $amy_text_change = "Yeah";
  3. $amy_file = file("date.txt");
  4. // Pokaż prawdziwość kiedy tekst var("amy_text") jest znaleziony
  5. $amy_found = false;
  6. foreach($amy_file as $amy_line) {
  7. if (strpos($amy_line, $amy_text) !== false)
  8. {
  9. $amy_status = "Tekst został zmieniony.";
  10. $amy_found = true;
  11. $amy_mod_end = $amy_line->$amy_text_change;
  12. fwrite($amy_check_file, $amy_mod_end);
  13. fclose($amy_check_file);
  14. print $amy_status;
  15. }
  16. }
  17. // Jeśli tekst nie został znaleziony wypisz komunikat
  18. if (!$amy_found)
  19. {
  20. $amy_status = "nie znaleziono i nie zamieniono tekstu.";
  21. print $amy_status;
  22. }


Wykonałam i PHP zwróciło komunikat: "Tekst został zmieniony.", ale kiedy otworzyłam plik, by sprawdzić czy rzeczywiście się tak stało, niestety rozczarowałam się, ponieważ YEAH nie zmieniło się tak jak chciałam.

Co robię źle? Proszę o poprawkę sad.gif
Go to the top of the page
+Quote Post
aras785
post 5.12.2021, 17:52:48
Post #4





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

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


  1. <?php
  2.  
  3. $file = 'dane.txt'; //sciezka do pliku
  4. $content = file_get_contents($file); //pobieranie zawartości pliku
  5. $content = \str_replace('YEAH', 'WOOOOOOW', $content); //zmieniamy YEAH na WOOOOOOW
  6. file_put_contents($file, $content);//zapisywanie nowe zawrtości do tego samego pliku

Go to the top of the page
+Quote Post
viking
post 5.12.2021, 18:00:37
Post #5





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


  1. $amy_text = "/YEAH/ui";
  2. $amy_text_change = "Yeah";
  3. $amy_file = file("plik.txt", FILE_IGNORE_NEW_LINES);
  4. foreach($amy_file as &$amy_line) {
  5. $amy_line = preg_replace($amy_text, $amy_text_change, $amy_line);
  6. }
  7. unset($amy_line);
  8. file_put_contents('plik.txt', implode(PHP_EOL, $amy_file));

Albo z tablicą. Tylko naprawdę, przestań używać wszędzie w nazwie zmiennej "amy".


--------------------
Go to the top of the page
+Quote Post
AmyLokmart
post 5.12.2021, 18:06:57
Post #6





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 28.11.2021

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


Dziękuję "aras785" za Twój przykład smile.gif Działa dobrze smile.gif

Dodałam do Twojego przykładu dyrektywe[count>0], aby mi wyświetlało komunikat, że zmieniono. smile.gif
Go to the top of the page
+Quote Post
aras785
post 5.12.2021, 18:08:15
Post #7





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

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


Cytat(viking @ 5.12.2021, 18:00:37 ) *
Albo z tablicą. Tylko naprawdę, przestań używać wszędzie w nazwie zmiennej "amy".


hahah czasem w starych skryptach spotykam takie kwiatki biggrin.gif
Go to the top of the page
+Quote Post
AmyLokmart
post 5.12.2021, 20:27:39
Post #8





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 28.11.2021

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


"Viking" Dziękuję za Twój kodzik z "tablicą", ale przykład "arasa785" jest, jakby to napisać, prosty smile.gif Ja raczej nie używam tablicy na działaniach dotyczących plików, ponieważ w różnych plikach wykonuje różne skrypty, a tablica tylko mi wszystko pomiesza. Tablicę wykorzystuje wtedy jak chcę wprowadzić "obudowanie strukturalne", czyli dodatkowy kod do bardzo dużej ilości plików. Ale "Viking" Dziękuję Tobie za uwagi i za to, że podzieliłeś się swoim kodem smile.gif
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 - 20:26