1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| $pattern = <<<'EOD'
~
(?(DEFINE)
(?<number> -?(?:[1-9][0-9]*(?:\.[0-9]+)?|0(?:\.[0-9]+)?)(?:[eE][-+]?[0-9]+)? )
(?<null> null )
(?<boolean> true | false )
(?<string> " [^"\\]*+ (?:\\.[^"\\]*)*+ " )
(?<list> \[ \s* (?: \g<value> (?: \s* , \s* \g<value> )*+ )?+ \s* ] )
(?<object> { \s* (?: \g<keyval> (?: \s* , \s* \g<keyval> )*+ )?+ \s* } )
(?<value> \g<number> | \g<null> | \g<boolean> | \g<string> | \g<list> | \g<object> )
(?<keyval> \g<string> \s* : \s* \g<value> )
)
(?:
\G(?!\A) : \g<object> ,
|
\A
{ "objekte" :
{
(?: \g<keyval> (?: \s* , \s* \g<keyval>)*? , "objekte" : | "objekte" : ) {
)
(?:
\g<string> : {
(?: \g<keyval> (?: \s*, \g<keyval> )*? , "land" : | "land" : ) (?!"ESP") \g<value>
(?: , \g<keyval> )* } ,
)*+
" (?<ID> [^"\\]*+ (?:\\.["\\]*)*+ ) "
~x
EOD;
if ( preg_match_all($pattern, $json, $matches) ) {
print_r($matches['ID']);
} |
Partager