Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyciąganie danych z pliku, preg_match
Blace
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 16.11.2007

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


Witam,

czy może ktoś pomóć, mam taki pliczek:

[04/sty/2007:01:52:46 +0100] modul: war-load stan: przeciazenie aktualny load: 215 prog: 020
[05/sty/2007:19:29:52 +0100] modul: war-ping stan: zbyt duze obciazenie hosta: ftp.szczecin.pl 0.338ms prog: 0 ms zbyt duze obciazenie hosta: heat.szczecin.pl 0.314ms prog: 0 ms



i potrzebuje za pomocą wyrażen reg wyciągnąc tylko tą częsc czesc pliku:

[04/sty/2007:01:52:46 +0100] modul: war-load stan: przeciazenie aktualny load: 215
[05/sty/2007:19:29:52 +0100] modul: war-ping stan: zbyt duze obciazenie hosta: ftp.szczecin.pl 0.338ms prog: 0 ms zbyt duze obciazenie hosta: heat.szczecin.pl 0.314ms





ogólnie chodzi o to zeby odcinał z każdego wiersza tekst który zaczyna sie od slowa prog,


Wie ktoś może jak to zrobić?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Liko
post
Post #2





Grupa: Zarejestrowani
Postów: 436
Pomógł: 6
Dołączył: 8.11.2003
Skąd: Szczecin

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


  1. <?php
  2.  
  3. $sLogs = '[04/sty/2007:01:52:46 +0100] modul: war-load stan: przeciazenie aktualny load: 215 prog: 020
  4. [05/sty/2007:19:29:52 +0100] modul: war-ping stan: zbyt duze obciazenie hosta: ftp.szczecin.pl 0.338ms prog: 0 ms 
  5. zbyt duze obciazenie hosta: heat.szczecin.pl 0.314ms prog: 0 ms';
  6.  
  7. $sLogs = join(array_map(create_function('$s', 'return substr( $s, 0, strpos( $s, 'prog' ) );'), explode( "\n", $sLogs )), "\n");
  8.  
  9. var_dump($sLogs);
  10. ?>


+ explode" title="Zobacz w manualu PHP" target="_manual - rozbija łańcuch znaków na tablicę wg. znaków nowej lini;
+ create_function" title="Zobacz w manualu PHP" target="_manual - tworzy dynamicznie funkcję, która jest wykorzystywana w następnej funkcji;
+ strpos" title="Zobacz w manualu PHP" target="_manual - zwraca pozycję w łańcuchu znaków wystąpienia łańcucha "prog";
+ substr" title="Zobacz w manualu PHP" target="_manual - odcina podaną ilość znaków;
+ array_map" title="Zobacz w manualu PHP" target="_manual - wykonuje podaną funkcję na każdym elemencie tablicy;
+ join" title="Zobacz w manualu PHP" target="_manual - łączy wszystko znowu w łańcuch znaków;

Nie wiem czy takie rozwiązanie jest szybsze niż użycie wyrażeń regularnych.

  1. <?php
  2.  
  3. $sLogs = '[04/sty/2007:01:52:46 +0100] modul: war-load stan: przeciazenie aktualny load: 215 prog: 020 ms
  4. [05/sty/2007:19:29:52 +0100] modul: war-ping stan: zbyt duze obciazenie hosta: ftp.szczecin.pl 0.338ms prog: 0 ms 
  5. zbyt duze obciazenie hosta: heat.szczecin.pl 0.314ms prog: 0 ms';
  6.  
  7. $sLogs = preg_replace( '/(.*)(prog(.*))/i', '$1', $sLogs );
  8.  
  9. print($sLogs);
  10. ?>


Ten post edytował Liko 29.12.2007, 03:48:16
Go to the top of the page
+Quote Post

Posty w temacie
- Blace   Wyciąganie danych z pliku, preg_match   28.12.2007, 23:47:13
- - Liko   [PHP] pobierz, plaintext <?php $sLogs = '[...   29.12.2007, 03:33:11
- - Blace   dzięki Liko   31.12.2007, 00:52:40


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: 10.10.2025 - 12:56