Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne] RegExp
Forum PHP.pl > Forum > Przedszkole
TheSnake
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.
by_ikar
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
)
wookieb
Zapytam inaczej. Dlaczego nie użyjesz standardu URL?
TheSnake
@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.
wookieb
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.
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.