Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] pętla zmieniająca tekst na inny w stringu dla każdego wiersza
thepanone
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 14.01.2013

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


Chciałbym napisać program, który zrobi rzecz następującą:
1. pobierze zawartość pliku tekstowego i każdy kolejny wiersz zapisze w każdym kolejnym elemencie tablicy stringów
2. dla każdego kolejnego elementu tablicy sprawdzi czy w stringu występuje zadany fragment tekstu
2a. jeśli występuje to zamieni inny fragment tekstu w tym stringu na podany
2b. jeśli nie występuje to idzie dalej


Powiedzmy, że pkt 1 jest już wykonany i mam w tablicy zawartość pliku
załóżmy, że mam tablicę stringów pięcioelementową $tablica

wykorzystuję funkcje:
preg_match - do sprawdzenia czy w wierszu występuje fragment tekstu
preg_replace - do zamiany fragmentu tekstu na inny w tym stringu
  1. for ( i = 0, i < 5, i ++ )
  2. {
  3. if (preg_match("abc", $tablica[i])) //jeśli występuje w wierszu fragment "abc"
  4. {
  5. $tablica[i]= preg_replace(111, 555, $tablica[i]);//to zastąp w tym wierszu fragment 111 na 555
  6. }
  7. else
  8. {
  9. if (preg_match("def", $tablica[i])) //jeśli występuje w wierszu fragment "def"
  10. {
  11. $tablica[i]= preg_replace(111, 666, $tablica[i]);//to zastąp w tym wierszu fragment 111 na 666
  12. }
  13. else
  14. {
  15. if (preg_match("ghi", $tablica[i])) //jeśli występuje w wierszu fragment "ghi"
  16. {
  17. $tablica[i]= preg_replace(111, 777, $tablica[i]);//to zastąp w tym wierszu fragment 111 na 777
  18. }
  19. }
  20. }
  21. }
  22.  


proszę pomóc mi ten kod uczłowieczyć. W zasadzie wiem co mam użyć, ale jak to poskładać w kupę to już niestety nie.

Ten post edytował thepanone 31.12.2013, 23:49:30
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thepanone
post
Post #2





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 14.01.2013

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


składnia poprawiona. Skrypt nie modyfikuje mi pliku tekstowego. Proszę o wskazówkę.
  1. <?php
  2. $tablicapliku = file("plik.txt");//wczytanie całego pliku w tablicę. Każdy wiersz jako osobny element tablicy. plik ma 15 wierszy
  3. $a = "/aaa/";
  4. $b = "/bbb/";
  5. $c = "/ccc/";
  6. $d = "/ddd/";
  7. $e = "/eee/";
  8. $zero = "/000/";
  9. $jeden = "/111/";
  10. $dwa = "/222/";
  11. $trzy = "/333/";
  12. $cztery = "/444/";
  13. $piec = "/555/";
  14.  
  15. for ( $i = 0; $i < 15; $i ++ )
  16. {
  17. if (preg_match($a, $tablicapliku[$i])) //jeśli występuje w wierszu fragment "abc"
  18. {
  19. $tablicapliku[$i]= preg_replace( $zero, $jeden , $tablicapliku[$i]);//to zastąp w tym wierszu fragment 000 na 111
  20. }
  21. elseif (preg_match($b, $tablicapliku[$i])) //jeśli występuje w wierszu fragment "/bbb/"
  22. {
  23. $tablicapliku[$i]= preg_replace($zero, $dwa, $tablicapliku[$i]);//to zastąp w tym wierszu fragment 000 na 222
  24. }
  25. elseif (preg_match($c, $tablicapliku[$i])) //jeśli występuje w wierszu fragment "/ccc/"
  26. {
  27. $tablicapliku[$i]= preg_replace($zero , $trzy, $tablicapliku[$i]);//to zastąp w tym wierszu fragment 000 na 333
  28. }
  29. elseif (preg_match($d, $tablicapliku[$i])) //jeśli występuje w wierszu fragment "/ddd/"
  30. {
  31. $tablicapliku[$i]= preg_replace($zero, $cztery, $tablicapliku[$i]);//to zastąp w tym wierszu fragment 000 na 444
  32. }
  33. elseif (preg_match($e, $tablicapliku[$i])) //jeśli występuje w wierszu fragment "eee"
  34. {
  35. $tablicapliku[$i]= preg_replace($zero, $piec, $tablicapliku[$i]);//to zastąp w tym wierszu fragment 000 na 555
  36. }
  37. }
  38. ?>


plik.txt

aaa xxxxxxxxxxxxxxxxxxxx 000
bbb xxxxxxxxxxxxxxxxxxxx 000
ccc xxxxxxxxxxxxxxxxxxxx 000
ddd xxxxxxxxxxxxxxxxxxxx 000
eee xxxxxxxxxxxxxxxxxxxx 000
fff xxxxxxxxxxxxxxxxxxxx 000
aaa xxxxxxxxxxxxxxxxxxxx 000
bbb xxxxxxxxxxxxxxxxxxxx 000
ccc xxxxxxxxxxxxxxxxxxxx 000
ddd xxxxxxxxxxxxxxxxxxxx 000
eee xxxxxxxxxxxxxxxxxxxx 000
fff xxxxxxxxxxxxxxxxxxxx 000
aaa xxxxxxxxxxxxxxxxxxxx 000
bbb xxxxxxxxxxxxxxxxxxxx 000
ccc xxxxxxxxxxxxxxxxxxxx 000
ddd xxxxxxxxxxxxxxxxxxxx 000
eee xxxxxxxxxxxxxxxxxxxx 000
fff xxxxxxxxxxxxxxxxxxxx 000
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 2.10.2025 - 17:29