Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wyrażenie regularne przeszukujące string
Forum PHP.pl > Forum > Przedszkole
S_Olewniczak
Proszę o pomoc, ponieważ nie mogę się jakoś wgryźć, w wyrażenia regularne i i bardziej skomplikowane sprawiają mi trudności. A, więc do rzeczy. Najłatwiej opisać mi mój problem przykładem. Mam taki string:
Kod
required,chars[1,2,3,4,5,6,7,8,9, p], aaa, ala[e,r,t,y]

I chcę tak przetworzyć ten kod aby uzyskać tablicę:
Kod
array(
'required',
'chars[1,2,3,4,5,6,7,8,9]',
'aaa',
'ala[e,r,t,y]'
)

Chodzi oto, żeby kod dzielił string, na podstringi, według przecinków, ale nie zwracał uwagi na przecinki w nawiasach kwadratowych. Jak mogę tego dokonać?
Pawel_W
substr + explode
wycinasz ten kawałek z nawiasami i dzielisz
S_Olewniczak
Nie rozumiem worriedsmiley.gif . Mógłbyś mi to wyjaśnić bardziej szczegółowo, albo podać prostszą metodę?
phpion
Zmień "strukturę", a będzie ci prościej.
Kod
required|chars[1,2,3,4,5,6,7,8,9,p]|aaa|ala[e,r,t,y]

Dzielisz teraz po | i masz to co chcesz. Używanie jednego separatora do wszystkiego to prośba o problemy.
S_Olewniczak
Niestety, w moim skrypcie może zajść taka sytuacja:
Kod
required|chars[1,2,3,4,5,6,7,8,9,p, |]|aaa|ala[e,r,|,t,y]

I w tedy Twoje rozwiązanie nie sprawdzi się.
glh
To zamiast separatora | daj cos co sie nie powtorzy, np. ciag "alamakotakotmaaids". Oczywiscie nie musi on byc taki dlugi. Separator moze byc dowolny i wtedy skorzystac z funkcji explode.
S_Olewniczak
Czyli rozumiem, że rozwiązanie tego problemu, dokładnie jak chcę jest niemożliwe?
phpion
Jest możliwe ale przy założeniu rozsądnych reguł (np. inny separator). Po co utrudniać sobie życie? Piszesz, że w przypadku mojego przykładu może zajść potrzeba użycia | w innym miejscu. Zgadza się - "może". Natomiast w twoim przykładzie juz z założenia zachodzi konflikt separatorów.
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.