Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Funkcja zwracjąca wers
david069
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 2.03.2008

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


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. ?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Cienki1980
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


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.
Go to the top of the page
+Quote Post
david069
post
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 2.03.2008

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


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 (IMG:http://forum.php.pl/style_emoticons/default/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! (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Ten post edytował david069 11.09.2008, 20:12:58
Go to the top of the page
+Quote Post
Cienki1980
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) .

Wyświetlanie wyników też można zrobić w foreach()
Go to the top of the page
+Quote Post
david069
post
Post #5





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 2.03.2008

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


Jak już napisałem znalazłem rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) muszę tylko pomyśleć coś z tą dziesiątkitysięcy obracającą się pętlą (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Go to the top of the page
+Quote Post
Cienki1980
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Cytat(david069 @ 11.09.2008, 21:14:36 ) *
Jak już napisałem znalazłem rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) muszę tylko pomyśleć coś z tą dziesiątkitysięcy obracającą się pętlą (IMG:http://forum.php.pl/style_emoticons/default/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() )
Go to the top of the page
+Quote Post
david069
post
Post #7





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 2.03.2008

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


No wreszcie udało mi się połączyć Twój kod z moim (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Jeszcze raz dzięki (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Oczywiście podam jeszcze rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/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. ?>
Go to the top of the page
+Quote Post

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: 22.08.2025 - 23:21