Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Przeszukowanie pliku
Forum PHP.pl > Forum > Przedszkole
Morale
Witam, jak przeszukać plik tekstowy, by po wyszukaniu pokazywało numer linii, w której znajduje się szukany tekst oraz by pokazywało wszystkie linie, w których znajduje się szukany tekst, a nie tylko jedną.

Mój plik:
Cytat
||1|abcisdofdsf||l24323||
||2||dlldldl||qwerty||


Dodatkowo jakby też mógł przeszukiwać pomiędzy pierwszymi dwoma kreskami, a drugimi.
ayeo
Użyj funkcji file(); do pobrania zawartości pliku jako tablicy. Przeszukaj każdy elemet tablicy pod kątem Twojego wyrażenia. Numer elementu jest jednocześnie numerem linii. Pozdrawiam!
Morale
Ale jaką funkcją przeszukać questionmark.gif
ayeo
Nie wiem co będzie najlepsze w Twoim przypadku strpos(); lub preg_match(); z preg_quote();
Morale
Ja korzystałem już z preg_match, ale on pokazywał mi tylko jeden wynik, a ja chcę tyle ile tych szukanych tekstów istnieje.
webdice
Cytat(Morale @ 22.04.2008, 13:00:37 ) *
Ja korzystałem już z preg_match, ale on pokazywał mi tylko jeden wynik, a ja chcę tyle ile tych szukanych tekstów istnieje.


Użyj preg_match_all" title="Zobacz w manualu PHP" target="_manual.
pyro
Napisałem prostą przeszukiwarke zawartości pliku, mysle ze to moze pomoc smile.gif

  1. <?php
  2.  
  3. $plik = file('plik.txt');
  4. function przeszukaj($wartosc)
  5. {
  6. $szukana_fraza = 'fraza';
  7. if(stristr($wartosc, $szukana_fraza))
  8. { return true; }
  9. else
  10. {return false; }
  11. }
  12. array_walk($plik, 'przeszukaj')
  13.  
  14. // jesli nie znajdzie danej frazy to zwroci false'a
  15. // jesli znajdzie - true
  16.  
  17. ?>


oo sorry nie zauwazylem ze chcesz wiedziec ile razy dana fraza byla

W zwiaku z tym napisalem nowa przeszukiwarke tongue.gif
  1. <?php
  2.  
  3. $i = 0;
  4. $plik = file('plik.txt');
  5. $szukana_fraza = 'fraza';
  6. foreach($plik as $linia)
  7. {
  8.  
  9. if(stristr($linia, $szukana_fraza))
  10. {
  11. $i += 1;
  12. }
  13. else
  14. {
  15. continue;
  16. }
  17. }
  18.  
  19. // teraz zmienna $i ma ilosc powotrzen wystepowania danej frazy
  20.  
  21. ?>

Zajelo to mniej niz myslalem...
webdice
~pyro, jak ten pierwszy kod działa to jestem pod wrażeniem, poczytaj o dostępności zmiennych w funkcjach. Co do drugiego kodu popraw 12 linie.
pyro
Cytat(webdicepl @ 22.04.2008, 14:08:05 ) *
~pyro, jak ten pierwszy kod działa to jestem pod wrażeniem, poczytaj o dostępności zmiennych w funkcjach. Co do drugiego kodu popraw 12 linie.


rzeczywiscie, wyedytowalem troche kod i zapomnialem przeniesc zmiennej do wnetrza funkcji, ale juz poprawilem, a co jest nie tak w 12 linijce drugiego kodu?
Morale
Ale ja chcę, żeby on powiedział mi, w jakiej linii jest dana fraza, a nie ile plik ma linii.
ayeo
  1. <?php
  2. $plik = file('plik.txt');
  3. $szukana_fraza = 'fraza';
  4. $lines_no = array();
  5.  
  6. foreach($plik as $numer => $linia)
  7. {
  8. if(stristr($linia, $szukana_fraza))
  9. {
  10. $lines_no[] = $numer;
  11. }
  12. }
  13.  
  14. print_r($lines_no);
  15. ?>


Pozdrawiam!
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.