2013-06-01 1 views
0

Я получение событий от системы видеонаблюдения, которая возвращает данные в следующем формате,Анализировать страницы, чтобы массив в PHP

[ 
{ alarmimage : '060429.0', timestamp : '1370099686.721', date : '2013-06-01', time : '16:14:46', events : 'VM' }, 
{ alarmimage : '060428.0', timestamp : '1370097952.081', date : '2013-06-01', time : '15:45:52', events : 'VM' }, 
{ alarmimage : '060427.0', timestamp : '1370097946.972', date : '2013-06-01', time : '15:45:46', events : 'VM' }, 
{ alarmimage : '060426.0', timestamp : '1370084199.546', date : '2013-06-01', time : '11:56:39', events : 'VM' }, 
{ alarmimage : '060425.0', timestamp : '1370083407.462', date : '2013-06-01', time : '11:43:27', events : 'VM' } 
] 

Я просто с помощью get_data() вернуться выше, что является наиболее эффективным способом прокручивать каждое из этих значений для отображения в виде списка событий/изображений?

Большое спасибо заранее.

+4

использование json_decode – bwoebi

ответ

1

Поскольку имена ключей вы получаете от вашей системы видеонаблюдения не в кавычках , строка не является допустимой строкой JSON. Вы не сможете проанализировать его с помощью json_decode, не выполняя некоторую уродливую модификацию строки.

При поиске альтернативы, я нашел этот ответ: https://stackoverflow.com/a/6250894/1560865

Ответ рекомендует использовать тот факт, что JSON является подмножеством YAML. Поскольку YAML немного менее строг в отношении котировок, вы должны иметь возможность анализировать вашу строку с помощью анализатора YAML.

+0

Спасибо, это точно проблема, теперь это имеет гораздо больше смысла. Я буду рассматривать решения здесь. Благодаря Хауке – user2443639

1

Этот формат называется json (обозначение объекта javascript).

Вы можете разобрать его очень просто с json_decode(), см: http://php.net/manual/en/function.json-encode.php

+0

Возможно также стоит взглянуть на [json.org] (http://json.org) для справки. – alexkonradi

+0

Спасибо, я сначала использовал json_decode(), но понимаю, что есть различия в выводах, которые заставляют меня думать, что это не правильное использование, я попытался объяснить это ниже. Большое спасибо за Ваш ответ. – user2443639

0

Используйте json_decode() с чем-то вроде этого:

<?php 

$encdata = getTheData(); // your method to get the string 
$data = json_decode($encdata); 
foreach($data => $row) 
{ 
    // access the row members like this: 
    // $row->alarmimage 
    // $row->timestamp 
    // $row->date 
    // ... 
} 

?> 
+0

Спасибо, вот и все, я думаю, что я с этим справился с поведением камеры, некоторые камеры, похоже, выводятся без кавычек, есть ли способ справиться с этим с помощью одного и того же цикла? выход, который, по-видимому, работает над этим циклом, выглядит следующим образом: [ { "alarmimage": "111941.0", "date": "2013-06-02", "events": "TT", "список событий ": [ {" name ":" TT "," eventid ":" TT "," type ":" TIM "}], " time ":" 12:01:01 ", " timestamp ":" 1370170861.648 « }, формат как оригинал, отправленный без кавычек, не работает? Большое спасибо – user2443639

+0

Отредактировал мой ответ. Должен работать сейчас. –

+0

Хм, его изменение кавычек вокруг значений, но я думаю, что они нужны мне и для ключей, чтобы они были действительны? Он оставил меня с этим [{alarmimage: "060646.0", timestamp: "1370184797.838", Большое спасибо – user2443639