Intereting Posts

Как сделать регулярное выражение в следующих данных с помощью PHP

  // [{"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];


Ресурсы :

  • php.net json_decode ()

По той же теме:

  • Помогите с потреблением фида JSON с PHP и json_decode

Поскольку это 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?