Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [RegEX] 2 pytania o: I. AND-owski odpowiednik pipeline "|" (OR) II. wstawianie ze zmiennej warunku do instrukcji if
Forum PHP.pl > Forum > Przedszkole
r.drozd
I. AND-owski odpowiednik pipeline "|" (OR)
  1. <?php
  2. $tresc = 'hjkhkh hjkhj jh test1 dfjkfgjkl jfkgldj test2 fgfgfgfgf';
  3. if(preg_match("#b(test1|test2)b#si", $tresc)){
  4. echo 'YES';
  5. }
  6. ?>


Jeśli w zmiennej $tresc znajduje się wyraz 'test1' lub 'test2' to wyświetli się 'YES'.
Czy ktoś z Was spotkał się może z AND-owskim odpowiednikiem znaku pipeline '|' (OR)?

II. Wstawianie ze zmiennej warunku do instrukcji if
  1. <?php
  2. $tresc = "preg_match("#b(test1|test2)b#si", $tekst)";
  3. if($tresc){
  4.  echo 'YES';
  5. }
  6. ?>


Aktualnie kod wyświetla 'YES', ale tylko dlatego że do zmiennej $tresc jest przypisana wartość.
Czy jest możliwość przekształcenia tego, aby instrukcja warunkowa if nie sprawdzała zmiennej, ale wykonywała kod zawarty w tej zmiennej??

Z góry dziękuję za ew. podpowiedź.
Pozdr. R. Drozd
qwaq
tak ja a dokładnie ||
Kicok
Cytat
Czy ktoś z Was spotkał się może z AND-owskim odpowiednikiem znaku pipeline '|' (OR)?


Nie ma czegoś takiego w wyrażeniach regularnych. Możesz za to zastosować:
  1. <?php
  2.  
  3. if( preg_match( '#btekst1b#si', $tresc ) && preg_match( '#bteskt2b#si', $tresc ) ) {
  4. echo 'OK';
  5. }
  6.  
  7. ?>


lub:
  1. <?php
  2.  
  3. if( preg_match( '#btekst1b.*btekst2b|btekst2b.*bteskt1b#si' ) ) {
  4. echo 'OK';
  5. }
  6.  
  7. ?>

Drugie rozwiązanie nie nadaje się do sprawdzania większej ilości danych


Cytat
Czy jest możliwość przekształcenia tego, aby instrukcja warunkowa if nie sprawdzała zmiennej, ale wykonywała kod zawarty w tej zmiennej??

eval" title="Zobacz w manualu PHP" target="_manual
r.drozd
Dzięki za podpowiedź, trafna w 100%.
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.