Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rozbicie odpowiednio stringu przy użyciu preg_match oraz preg_split
Kemsan
post
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 6
Dołączył: 30.06.2008
Skąd: Bytom

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


Witajcie!
Ostatnio tworząc swój projekt stanąłem nad pewną kwestią, potrzebuję rozbić string z takiej postaci:
[pole1=0,pole2="Test"]

Proste? Nie sądzę, rozpatrzę dla was kilka problemów:
[pole1=0,pole2=1] - wszystkie "wartości" dla pól są intami, prosta sprawa:
$exp = explode(',', $tekst); no i otrzymam ładny array( 0 => 'pole1=0', 1 => 'pole2=1' ) no i później używam preg_match by ładnie to "obrobić".
[pole1="test",pole2="test2"] - wszystkie "wartości" to stringi, czyli to samo co wyżej.
To rozpatrzmy to teraz to problemowe rozbicie:
[pole1=0,pole2="Test, test"] - w czym problem? Otóż czy to preg_split czy explode (używam tego pierwszego w postaci:
$split = preg_split("/[\s]*[,][\s]*/", $match) - dzięki czemu mam "niezależny" explode, niezależny o tyle, że przed nim, czy też po nim mogę ile chcę użyć spacji, dzięki czemu zapisz jest łatwiejszy) to zawsze będę miał błąd, dlaczego? Ponieważ w wartości "pole2" mamy przecinek, czyli część dzięki której rozbijamy ten string.
( Wynikiem rozbicia tego będzie tablica: array( 0 => 'pole1=0', 1 => 'pole2="Test", 2 => " test" ) ).

Moje pytanie do was, czy da się ten problem jakoś rozwiązać tak by string w " ", był nieczuły na explode (preg_split)?

Ten post edytował Kemsan 31.01.2011, 17:07:47
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
toel
post
Post #2





Grupa: Zarejestrowani
Postów: 97
Pomógł: 11
Dołączył: 2.02.2010

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


może trochę na około, ale weź preg replacem najpierw zamień wszystkie przecinki na jakiś własny symbol np -|- czy coś takiego, ale pod warunkiem, że znajdują się między =" a ".
Potem zrób splita, a na koniec w całej tablicy zrób replace -|- na przecinek
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 4.10.2025 - 09:09