Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyświetlanie rekordów tablicy spełniających okraślone założenie
Forum PHP.pl > Forum > Przedszkole
tdk2005
Witam,

stworzyłem tablicę $plik poprzez wgranie pliku TONE.LOG funkcją file(), teraz chciałbym:
1. Z każdego rekordu usunąć ciąg znaków "Duration : 0 Min 0 Sec" (wartości liczbowe się zmieniają w zależności od długości nagrania).
2. Wyświetlić w oddzielnej tabeli rekordy które by spełniały określone założenie (zawierały by określony ciąg znaków na końcu np. "595605"

Kod
<?PHP

$plik = file('../TONE.LOG'); //wywoluje plik log do tablicy plik

$plik = array_reverse($plik); //odwraca wyswietlanie. Najnowsze wpisy na gorze a nie na dole.

     echo '<pre>'; //powoduje prezentacje pliku w formie linii a nie ciagu.
    
print_r($plik); //wyswietla cala surową tablice na stronie.  
?>


TONE.LOG
Cytat
=====================================================
WinTone 2.02 - Log File
Started 2010-02-08 15:41:03
=====================================================
2010-02-08 15:41:18 Duration : 0 Min 3 Sec Tones : 595905
2010-02-08 15:41:23 Duration : 0 Min 1 Sec Tones : 595900
2010-02-08 15:41:26 Duration : 0 Min 1 Sec Tones : 522506
2010-02-08 15:41:29 Duration : 0 Min 1 Sec Tones : 522506
-----------------------------------------------------
- END of Log File - Terminated 02-08-10 03:41:31 pm
-----------------------------------------------------
Blame
Nie widzę tu innego rozwiązania jak wyrażenia regularne(poczytaj o nich np. na wiki). Do pierwszego przyda się preg_replace a do drugiego preg_match_all.
tdk2005
Dzięki za podpowiedź z pierwszym założeniem i "preg_replace" poszło mi całkiem gładko ale (zawsze jest jakieś ale haha.gif) "preg_match_all" to dla mnie jakaś czarna magia jedyną sytuacją kiedy php nie wywala jakiegoś błędu w kodzie jest ta zawarta poniżej a i tak funkcja wyświetla albo tylko słowo "Array" albo przy "print_r()" wyświetla puste tablice.

I takie pytanie czy "preg_match_all" potrafi rozpoznać kilka różnych wzorców bo ja w sumie mam do wprowadzenie i rozpoznania kilkadziesiąt różnych statusów (kilkanaście wozów każdy po 10 statusów).

Pewnie będzie to jakaś głupota ale to mój pierwszy projekt w php i nie zawsze rozumiem o czym do mnie piszą w manualu.

  1. <?PHP
  2.  
  3. $plik = file('../TONE.LOG'); //wywoluje plik log do tablicy plik
  4.  
  5. $plik = array_reverse($plik); //odwraca wyswietlanie. Najnowsze wpisy na gorze a nie na dole.
  6.  
  7. echo '<pre>'; //powoduje prezentacje pliku w formie linii a nie ciagu. Tworzy tablice?
  8.  
  9. for( $x = 0 ; $x < 200; $x++ ) { // Pętla wykona się 200 razy (0...200)
  10.  
  11. $string = $plik[$x]; //tabela podana do zmian
  12.  
  13. $patterns[0] = '/ Duration : (.) Min (.) Sec /'; //wzorzec
  14. $patterns[1] = '/ Tones :/';
  15. //Edycja tabeli
  16.  
  17. $replacements[0] = '';//efekt porzadany
  18. $replacements[1] = '<strong>Status :</strong>';
  19. //Edycja tabeli
  20.  
  21. preg_replace($patterns, $replacements, $string);//tutaj wszystko ok
  22.  
  23. $subject = $plik[$x];
  24.  
  25. $pattern = '/^666666/';
  26.  
  27. preg_match_all($pattern, $subject, $matches);
  28. echo $matches;
  29. }
  30. ?>
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.