Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wyrażenie regularne do wielu warunków
Forum PHP.pl > Forum > Przedszkole
knefelio
Chciałem napisac wyrażenie które wypisze mi z tekstu wiersze zawierające słowo img ale pominie zawierające słowa jpg i bmp:

  1. if(preg_match_all('/.*img.*/i', $file_contents, $matches) and !preg_match_all('/.*jpg.*|.*bmp.*/i', $file_contents, $matches))
  2. {
  3. foreach ($matches[0] as $wiersz) {
  4. echo $wiersz."<br />";
  5. }
  6. }


Wydaje mi się że działa to niepoprawnie przez warunek w if, ale nie wiem jak to napisać inaczej.
Sephirus
Przede wszystkim to tak nie zadziała... tu w ogóle nie trzeba używać preg_matchy...

Jeśli $file_contents to zawartość pliku to wystarczy:

  1. $lines = file('sciezka/do/pliku');
  2.  
  3. foreach($lines AS $l)
  4. {
  5. if(strpos($l,'img') !== false && strpos($l,'jpg') === false && strpos($l,'bmp') === false)
  6. echo $l; // wyświetla linie z "img";
  7. }


Jeśli natomiast zmienna $file_contents nie jest z pliku to wystarczy ją eksplodować po "enterach":

  1. $lines =explode("\n",$file_contents);
  2.  
  3. // reszta tak samo:
  4. foreach($lines AS $l)
  5. {
  6. if(strpos($l,'img') !== false && strpos($l,'jpg') === false && strpos($l,'bmp') === false)
  7. echo $l; // wyświetla linie z "img";
  8. }


HTH wink.gif
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.