Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]filtrowanie wyświetlanej treści ?
czezz
post
Post #1





Grupa: Zarejestrowani
Postów: 141
Pomógł: 0
Dołączył: 24.07.2003

Ostrzeżenie: (10%)
X----


To jest zawartość pliku: plik.txt
  1. "test balblablaa"
  2. "x balblablaa"
  3. "itrelemoreletest balblablaa"
  4. "test balblablaa2"


To jest kod, który wyświetla zawartość pliku plik.txt:
  1. <?php
  2. $plik = file('plik.txt');
  3. foreach($plik as $i => $linia) {
  4. $plik[$i] = trim($linia);
  5. }
  6.  
  7. print '<pre>';
  8. print_r($plik);
  9. print '</pre>';
  10. ?>


Pytanie:
Czy da się, w któryś miejscu tego kodu ustawić filtr tak aby wyświetlane były tylko wiersze, które zawierają ciąg znaków "test" ?
Tak ja w bash'u użył bym # grep test /tmp/plik.txt

Ten post edytował czezz 10.06.2011, 08:46:14
Go to the top of the page
+Quote Post
zordon
post
Post #2





Grupa: Zarejestrowani
Postów: 358
Pomógł: 78
Dołączył: 4.11.2008
Skąd: Kraków

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


zastosuj np strpos
Go to the top of the page
+Quote Post
czezz
post
Post #3





Grupa: Zarejestrowani
Postów: 141
Pomógł: 0
Dołączył: 24.07.2003

Ostrzeżenie: (10%)
X----


strpos() - nie działa tak jak chce. Zamiast wyniku wyświetla liczby.
Znalazłem preg_match() ale też coś jest nie tak:

  1. <?php
  2. $plik = file('plik.txt');
  3. foreach($plik as $i => $linia) {
  4. $plik[$i] = preg_match('/test/', trim($linia));
  5. }
  6.  
  7. print '<pre>';
  8. print_r($plik);
  9. print '</pre>';
  10. ?>


Ta funkcja działa prawie dobrze. Prawie bo zwraca wynik 0 lub 1.
Jak to zamienić na wynik rzeczywisty.

Ten post edytował czezz 10.06.2011, 09:26:53
Go to the top of the page
+Quote Post
kadlub
post
Post #4





Grupa: Zarejestrowani
Postów: 548
Pomógł: 105
Dołączył: 4.06.2010

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


  1. <?php
  2. $plik = file('plik.txt');
  3. foreach($plik as $i => $linia) {
  4. if(strpos($linia,'test')){
  5. $odczytany[$i] = trim($linia);
  6. }
  7. }
  8.  
  9. print '<pre>';
  10. print_r($odczytany);
  11. print '</pre>';
  12. ?>
  13.  
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Zajrzyj do manuala:
http://pl2.php.net/preg_match
Przeciez masz tam to wszystko napisane.
Go to the top of the page
+Quote Post
zordon
post
Post #6





Grupa: Zarejestrowani
Postów: 358
Pomógł: 78
Dołączył: 4.11.2008
Skąd: Kraków

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


  1. $plik = file('plik.txt');
  2. foreach($plik as $i => $linia) {
  3. if (strpos($linia, 'test') !== false){
  4. $plik[$i] = $linia;
  5. }else{
  6. unset($plik[$i]);
  7. }
  8. }
  9.  
  10. print '<pre>';
  11. print_r($plik);
  12. print '</pre>';


Ten post edytował zordon 10.06.2011, 09:30:40
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 - 17:15