Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] wyrażenia regularne c.d.
netmare
post 7.03.2008, 20:04:18
Post #1





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

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


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 ?
Go to the top of the page
+Quote Post
bim2
post 7.03.2008, 22:05:01
Post #2





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

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


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. ?>


--------------------
Go to the top of the page
+Quote Post
netmare
post 7.03.2008, 22:09:53
Post #3





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

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


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)
Go to the top of the page
+Quote Post
Kicok
post 8.03.2008, 11:58:12
Post #4





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


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. ?>


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
netmare
post 8.03.2008, 19:53:09
Post #5





Grupa: Zarejestrowani
Postów: 285
Pomógł: 37
Dołączył: 18.12.2007
Skąd: Łódź

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


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 ...

Ten post edytował netmare 8.03.2008, 19:57:11
Go to the top of the page
+Quote Post
Kicok
post 8.03.2008, 21:01:11
Post #6





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


http://www.gajdaw.pl/php/wyrazenia-regular...torial/p23.html


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 11.08.2025 - 19:02