Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wyrażenia regularne c.d.
Forum PHP.pl > Forum > Przedszkole
netmare
Napisałem pierwszy kod z wyrażeniem regularnym:

  1. <?php
  2. $cookie='Set-Cookie: nazwa=wartosc; expires=DATA; path=ŚCIEŻKA; domain=DOMENA; secure';
  3. $mask='/([%a-z0-9]+)=([%a-z0-9]+)/i';
  4. preg_match_all($mask,$cookie,$result);
  5. print_r($result);
  6. ?>


Teraz moje pytanie brzmi czy wewnątrz tego wyrażenia bądź przy pomocy nowych można wykluczyć expires, path i domain ?
bim2
czyli żeby je usuwało?
no to
  1. <?php
  2. foreach($result[1] AS $key => $value)
  3. {
  4. if($value=='path' OR ...)
  5. {
  6. unset($result[2][$key];  
  7. unset($result[1][$key];
  8. unset($result[0][$key];
  9. }
  10. }
  11. ?>
netmare
bardziej chodzi mi o same możliwości wyrażeń regularnych,
bo tak to wystarczy przed preg_match_all() skorzystać z str_replace() i zamienić te trzy nazwy na nulle doczytałem o negacji wewnątrz klasy i o alternatywach czyli (Ola|Jas) a teraz się zastanawiam czy jest możliwość jakoś to połączyć w stylu (^Ola&^Jas)
Kicok
Można to zrobić przy pomocy alternatywy:
  1. <?php
  2.  
  3. $cookie = "Set-Cookie: nazwa=wartosc; expires=DATA; path=SCIEZKA; domain=DOMENA; secure";
  4.  
  5. $mask = "/(?:expires|path|domain)=|([%a-z0-9]+)=([%a-z0-9]+)/i";
  6. preg_match_all( $mask, $cookie, $result );
  7.  
  8. echo "<pre>" . print_r( $result, true ) . "</pre>";
  9.  
  10. ?>



lub bardziej zaawansowane - przy pomocy przewidywania:
  1. <?php
  2.  
  3. $cookie = "Set-Cookie: nazwa=wartosc; expires=DATA; path=SCIEZKA; domain=DOMENA; secure";
  4.  
  5. $mask = "/(?!expires|path|domain)(b[%a-z0-9]+)=([%a-z0-9]+)/i";
  6. preg_match_all( $mask, $cookie, $result );
  7.  
  8. echo "<pre>" . print_r( $result, true ) . "</pre>";
  9.  
  10. ?>
netmare
hmm, drugi przykład u mnie zwraca false,
a pierwszy wynik którego niezbyt spodziewałem,
ale napewno już obrabialny, tyle że nie wiem jak to działa.
Ale i tak dzięki winksmiley.jpg

Edit: przepraszam mój błąd, przykład drugi działa idealnie tak jak chciałem, tylko gdzie mogę znaleźć wyjaśnienie ...
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.