// [{"id": "715320", "t": "500268", "e": "BOM", "l": "15.55", "l_cur": "Rs.15.55"
, "ltt": "3:59 PM IST", "lt": "9 сентября, 15:59 IST", "c": "+1.69", "cp": "12.19"
, "ccol": "chg"}]
Мне нужно получить каждый с именем и присвоить значение каждому
подобно
$ ID = 715320;
$ Е = BOM;
из выше данных, как я могу это сделать?
Ваша строка полностью похожа на данные JSon. Вы должны использовать методы JSon для анализа содержимого.
Если вы действительно хотите использовать регулярные выражения, вы можете сделать это:
<?php $yourString = '// [ { "id": "715320" ,"t" : "500268" ,"e" : "BOM" ,"l" : "15.55" ,"l_cur" : "Rs.15.55" ,"ltt":"3:59PM IST" ,"lt" : "Sep 9, 3:59PM IST" ,"c" : "+1.69" ,"cp" : "12.19" ,"ccol" : "chg" } ] '; preg_match_all("/\"(.+?)\"\s*:\s*\"(.+?)\"/", $yourString, $matches, PREG_SET_ORDER); foreach($matches as $match){ $resultArray[$match[1]] = $match[2]; } print_r($resultArray); ?>
Код на идеоне
В этом коде используется массив вместо переменных, но если вы действительно хотите использовать переменные, такие как $e
что действительно очень плохая идея, вы можете использовать переменные переменные .
Вы заменяете содержимое foreach следующим: ${$match[1]} = $match[2];
Ресурсы :
По той же теме:
Поскольку это JSON-кодированные данные, вы можете использовать json_decode, а не регулярное выражение – это гораздо надежнее (обязательно удалите ведущую \\
как это комментарий, а не JSON).
Чтобы затем получить данные в именованные переменные:
$array = json_decode($string, true); foreach ($array as $k => $v){ $$k = $v; }
Это приведет к id
, t
Д. (Которые теперь являются ключами в массиве $), которые устанавливаются как их собственные переменные, такие как $id
, $t
.
edit: как примечания aularon , вы также можете использовать метод extract для перемещения ключей массива в глобальную область.
Вам не нужны регулярные выражения, выше – нотация объектов JSON, вам нужно сделать php json_decode
на нем, получить значения, которые будут ассоциативным массивом:
$str='[ { "id": "715320" ,"t" : "500268" ,"e" : "BOM" ,"l" : "15.55" ,"l_cur" : "Rs.15.55" ,"ltt":"3:59PM IST" ,"lt" : "Sep 9, 3:59PM IST" ,"c" : "+1.69" ,"cp" : "12.19" ,"ccol" : "chg" } ] '; $data=json_decode($str, true); //true to get the data as associative arrays rather than objects. $data = $data[0];//since it's an object inside an array
с этого момента рекомендуется сохранить это как ассоциативный массив и получить доступ к объектам с помощью аксессуаров массивов:
$id = $data['id'];
Функция extract
PHP может быть использована для извлечения этих значений в текущий контекст, но это опасно, что обращение к массиву напрямую является лучшей идеей.
Разве это не просто JSON? Затем взгляните на json_decode . Или есть причина, по которой вам нужно сделать это с помощью Regex?