Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Funkcja zwracjąca wers
Forum PHP.pl > Forum > Przedszkole
david069
Witam, poszukuję funkcji zwracającej wers znalezionego tekstu tak jak tu tylko żeby zmienna $pos była liczbą numeru wersu a nie pozycji od początku:
  1. <?php
  2. $pos = strpos($text, 'say');;
  3. $arr = file($filen);
  4. echo $arr[$pos];
  5. ?>
Cienki1980
No to nie tak.
Z tego co widzę chcesz sprawdzić w pliku w której lini ( wersie ) jest dany tekst.

Musisz to zrobić w jakiejś pętli ( polecałbym foreach ) i sprawdzać czy w danej linijce tekstu jest szukany fragment . Jeżeli jest zwracasz klucz danego wiersza.
david069
Nie mogę zrozumieć tej funkcji
foreach (array_expression as $value)
możesz to na jakimś przykładzie czy coś?
I jakiej pętli for? Skąd wie ile razy obrócić?
Sprawdzić czy w danej linijce nie ma czym strpos()?

Nie widzę teraz w ogóle wyjścia, przedtem jeszcze jakiś pomysł miałem teraz zero biggrin.gif
Więc może zmieńmy pytanie jak wyświetlić wszystkie linijki w pliku tekstowy w której wystąpi ciąg znaków:
="\" say \""



Dobra ma się ten łeb! biggrin.gif
  1. <?
  2.  
  3. $filen="log.log";
  4. $size = filesize($filen);
  5.  
  6. for($i=0; $i<=$size; $i++)
  7. {
  8. $arr = file($filen);
  9. $is=stristr($arr[$i], "\" say \"");
  10.  
  11. if($is==true)
  12. {
  13. echo $arr[$i];
  14. echo "<br/>";
  15. }}
  16.  
  17. ?>

Tylko za długo to przeszukuję pętla razy sizefile się nie nadaje coś innego? Podzielimy może przez 5 takie strzelanie tongue.gif
Cienki1980
Cytat(david069 @ 11.09.2008, 20:50:35 ) *
Nie mogę zrozumieć tej funkcji
foreach (array_expression as $value)
możesz to na jakimś przykładzie czy coś?
I jakiej pętli for? Skąd wie ile razy obrócić?
Sprawdzić czy w danej linijce nie ma czym strpos()?

Nie widzę teraz w ogóle wyjścia, przedtem jeszcze jakiś pomysł miałem teraz zero biggrin.gif
Więc może zmieńmy pytanie jak wyświetlić wszystkie linijki w pliku tekstowy w której wystąpi ciąg znaków:
="\" say \""


Skoro otwierasz plik za pomocą file() to najprościej będzie Ci sprawdzić jak działa foreach za pomocą takiego testu:
  1. <?php
  2. $file = file("jakis_plik.txt");
  3.  
  4. foreach($file as $klucz=>$wartosc) {
  5.    echo "w wierszu numer: ".$klucz." znajduje sie tekst&nbsp:<b>".$wartosc."</b><br />";
  6. }
  7. ?>


Jak zrozumiesz jak to działa to powinnieneś wiedzieć w które miejsce wstawić funkcje sprawdzającą czy w wierszu występuje tekst i zapisać klucz ( czyli numer lini ).

Od razu podpowiem, że klucze zapisuj do tablicy a nie do zmiennej bo będziesz sobie nadpisywał kolejne wartości biggrin.gif.

Wyświetlanie wyników też można zrobić w foreach()
david069
Jak już napisałem znalazłem rozwiązanie winksmiley.jpg muszę tylko pomyśleć coś z tą dziesiątkitysięcy obracającą się pętlą tongue.gif
Cienki1980
Cytat(david069 @ 11.09.2008, 21:14:36 ) *
Jak już napisałem znalazłem rozwiązanie winksmiley.jpg muszę tylko pomyśleć coś z tą dziesiątkitysięcy obracającą się pętlą tongue.gif


Zrób tak jak ja napisałem a pętla będzie się tylko obrazała tyle razy ile jest wierszy w pliku a nie tyle razy ile bajtów ( chyba bo nie pamiętam dokładnie co zwraca filesize() )
david069
No wreszcie udało mi się połączyć Twój kod z moim biggrin.gif
Jeszcze raz dzięki winksmiley.jpg
Oczywiście podam jeszcze rozwiązanie smile.gif
  1. <?
  2.  
  3. $filen="log.log";
  4. $file = file($filen);
  5.  
  6. foreach($file as $i=>$wartosc)
  7. {
  8. $is=stristr($wartosc, "\" say \"");
  9.  
  10. if($is==true)
  11. {
  12. echo $wartosc;
  13. echo "<br/>";
  14. }}
  15.  
  16. ?>
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.