Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne] RegExp
TheSnake
post 1.02.2012, 11:03:48
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 10
Dołączył: 5.06.2009

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


Witam, nie mam zielonego pojęcia gdzie mogę to napisać, uznałem, że Przedszkole będzie najlepsze.

Mam string
Cytat
Login:Password@method=arg1#arg2#arg3

I chce wszystko pobrac do tablicy. Mam problem z ostatnia częścią, przy takim regexie:
Cytat
^([\w]*):([\w]*)@([\w]*)=([\w\d]*)
pobiera
Cytat
1. Login
2. Password
3. ban_check
4. arg1

Muszę pobrać wszystkie argumenty, a ilośc ich jest zmienna. Nie wiem jak mogę "zapętlić" ostatnią część by pobierało wszystkie argumenty. Ktoś robił takie coś w wyrażeniach regularnych? Czy łatwiej będzie użyć explode?

Pozdrawiam.
Go to the top of the page
+Quote Post
by_ikar
post 1.02.2012, 11:58:33
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Jeżeli potrzebujesz rozbić ciąg, to najlepiej użyć do tego preg_split, zamiast masy explode. preg_match tego nie zrobisz, tak mi się przynajmniej wydaje, głównie z uwagi na zmienną ilość elementów które mogą zostać dopasowane.


  1. <?php
  2.  
  3. $matches = preg_split('~:|@|=|#~is', 'Login:Password@method=arg1#arg2#arg3');
  4.  
  5. echo '<pre>'.print_r($matches, true).'</pre>';
  6.  


Wynik:

Kod
Array
(
    [0] => Login
    [1] => Password
    [2] => method
    [3] => arg1
    [4] => arg2
    [5] => arg3
)
Go to the top of the page
+Quote Post
wookieb
post 1.02.2012, 12:47:46
Post #3





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Zapytam inaczej. Dlaczego nie użyjesz standardu URL?


--------------------
Go to the top of the page
+Quote Post
TheSnake
post 3.02.2012, 22:28:15
Post #4





Grupa: Zarejestrowani
Postów: 115
Pomógł: 10
Dołączył: 5.06.2009

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


@wookieb
Faktycznie, nie pomyślałem o tym (może dlatego, że to nie protokół HTTP ani nic podobnego). Co prawda i tak nie użyję standardu URL (bo pewnie teraz znajdę łatwiejsze rozwiązanie), ale nasunąłeś mi kilka pomysłów, dzięki wielkie wink.gif

Pozdrawiam.
Go to the top of the page
+Quote Post
wookieb
post 3.02.2012, 23:18:32
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




URL nie dotyczy tylko http ale jest to uniwersalny format opisu adresu zasobu.
Format:
Kod
[schemat]://[uzytkownik]:[haslo]@host/sciezka?parametr=1&parametr=2

Używasz wtedy parse_url i masz wszystko co chcesz.


--------------------
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: 19.07.2025 - 10:03