Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] preg_match_all
Forum PHP.pl > Forum > Przedszkole
dev2222
Witam,
potrzebuję napisać wyrażenie któe wyciągnie mi wszystkie znaki spomiędzy znaczników "{" oraz "}".
problem polega na tym, że tych znakow w ciągu moze być dowolna ilosc, bo to jest json. potrzebuję więc wybrać wszystko ale pomiędzy pierwszym - motwierającym i ostatnim - zamykającym.

pomoże ktoś? wydarcie ciągu spomiedzy samych znacznikow to nie problem, gorzej jak sie powtarzają.
dziękuję.
Posio
json_decode
dev2222
json_decode to mozna użyc jak przez jsonem nie masz zadnego znaku, a tu jest json zapisany w tablice i zrzucony. czyli otoczenie zaśniecone innymi tresciami. potrzebuje wydobyć go tak jak pisalem.
b4rt3kk
Cytat(dev2222 @ 13.06.2013, 12:44:39 ) *
Witam,
potrzebuję napisać wyrażenie któe wyciągnie mi wszystkie znaki spomiędzy znaczników "{" oraz "}".
problem polega na tym, że tych znakow w ciągu moze być dowolna ilosc, bo to jest json. potrzebuję więc wybrać wszystko ale pomiędzy pierwszym - motwierającym i ostatnim - zamykającym.

pomoże ktoś? wydarcie ciągu spomiedzy samych znacznikow to nie problem, gorzej jak sie powtarzają.
dziękuję.


Przy wyrażeniu uwzględnij początek (^) oraz koniec ciągu ($). Przykładowo:

  1. preg_match('/^{(.*)}$/', $json, $matches);


W $matches[1] powinno być to czego szukasz.
dev2222
Cytat(b4rt3kk @ 13.06.2013, 12:53:17 ) *
Przy wyrażeniu uwzględnij początek (^) oraz koniec ciągu ($). Przykładowo:

  1. preg_match('/^{(.*)}$/', $json, $matches);


W $matches[1] powinno być to czego szukasz.



blisko, ale : ErrorException [ 2 ]: htmlspecialchars(): Invalid multibyte sequence in argument..
b4rt3kk
Cytat(dev2222 @ 13.06.2013, 12:57:35 ) *
blisko, ale : ErrorException [ 2 ]: htmlspecialchars(): Invalid multibyte sequence in argument..


Ale jak się ma to do funkcji preg_match? Przecież błąd wyrzuca htmlspecialchars().
dev2222
taki błąd wywala mi php opakowany w kohana3.

w czystym php nie wywala żadnych błędów, ale tez tablica jes pusta...


bede po kawałku wybebeszał tego jsona i zobacze na czym sie wywala...

generalnie to wyrazenie nic nie zwraca nawet w przypadku pojedynczych nawiasow.


$json = 'eqweqw bsqlws qwks wqskqwsq ws { dadadsdasdfc }';
preg_match('/^{(.*)}$/', $json, $matches);
print_r($matches);

--------
dla potomnych

preg_match("/\{(.*)\}/", $json, $matches);

działa ok. nawias klamrowy jest znakiem specjalnym i trzeba go "eskejpowac". temat jak widać w złym dziale...


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.