Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: znowu wyrazenia...
Forum PHP.pl > Forum > PHP
Rafiki
Otoz mam taki problem.

mam dany wzorzec do preg_metch'a i zmienna ktora chce nim potraktowac, a wlasciwie kilkanascie zmiennych.

i czy musza pisac np kilkanascie warunkow if z preg_matchem czy da sie zrobic to jakos jednym ifem i jednym preg_matchem wymieniajac zmienne np poprzecinku albo jakos inaczej ? nieusmiecha mi sie pisac kilkanascie warunkow z kazdy z ta sama zawartoscia ale odnoszacy sie do innej zmiennej :/
mike
Możesz coś w tym stylu:

  1. <?php
  2.  
  3. $strPattern = 'jakiś wzorzec';
  4. $arrVars = array( $zmienna_1, $zmienna_2, $zmienna_3, $zmienna_4 );
  5.  
  6. $blnResult = true;
  7.  
  8. foreach( $arrVars as $mixVar )
  9. {
  10. $intMatches = preg_match( $strPattern, $mixVar );
  11.  
  12. if( $intMatches == 0 )
  13. {
  14. $blnResult &= false;
  15. break; // jeśli chcesz sprawdzić wszystkie kolejne, nawet jak któryś 
  16.  // nie pasuje to wywal tego break'a
  17. }
  18. }
  19.  
  20. var_dump( $blnResult );
  21.  
  22. ?>
bendi
Mozna nieco inaczej snitch.gif
Korzystajac z alternatywy w regularkach
  1. <?php
  2.  
  3. $sSearch = 'jakiś wzorzec';
  4. $aPattern = array( $zmienna_1, $zmienna_2, $zmienna_3, $zmienna_4 );
  5.  
  6. preg_match_all( '/(' . join( ')|(', $aPattern ) . ')/', $sSearch, $aMatches );
  7.  
  8. print_r( $aMatches ); //tutaj masz wyniki
  9.  
  10. ?>


Mozna jeszcze zrezygnowac z "lapania" zanlezionych elementow poprzez usuwanie dodanie po kazdym rozpoczetym nawiasie ?:, ale to juz sobie musisz sam sprawdzic. Poza tym jak nie pasuje Ci sposo ulozenia wynikow, to mozna skorzystac z odpowiednich stalych ale o tym wiecej w manualu.

Pozostaje jeszcze kwestia "unikania" (escape'owania) znakow zastrzezonych dla regularek, wtedy najlepiej najpierw przemielic tablice funkcja preg_quote" title="Zobacz w manualu php" target="_manual
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.