2012-06-05 2 views
0

Используя javascript или php, как я могу получить значение с веб-страницы? Это JSON Я пытаюсь разобрать:Разбор значения с веб-страницы JSON

{ "ошибка": [ ""], "templateHtml": "", "_visitor_conversationsUnread": "0", "_ visitor_alertsUnread": "0"}

Я пытаюсь получить значение «_visitor_alertsUnread». Как мне это сделать?

Спасибо!

ответ

1

Вы можете либо проанализировать его с помощью регулярного выражения, используя json-декодирование, либо простое индексирование. Тем не менее, из этих трех, json - самый чистый и правильный путь.

1) JSON декодирования:

$page = file_get_contents($url); 
$json_arr = json_decode($string,true); 
return $json_arr['_visitor_alertsUnread']; 

2) Регулярное выражение:

$page = file_get_contents($url); 
$pattern = ".*?_visitor_alertsUnread\\\":\\\"(\\d)\\\""; 
preg_match($pattern, $page, $matches); 
return $matches[1]; 

3) Индексирование:

$page = file_get_contents($url); 
$needle = "_visitor_alertsUnread"; 
$startpos = strrpos($page, $needle) + strlen($needle) + 3; 
$endpos = strrpos($page, "\"", $startpos); 
return substr($page, $startpos, $endpos); 
+0

Что касается 2-го aprach. Является ли итерация над объектом JSON хорошей идеей, когда вы уже знаете ключ? –

+1

Хорошая точка; что касается использования процессора, я бы предположил, что доступ через ключ будет более эффективным. Теперь редактируем это. – Vulcan

+1

Yuck, ** please ** не поощряйте неопытного пользователя разбирать то, что, по-видимому, хорошо сформировано JSON с регулярным выражением! Используйте правильный инструмент для задания, 'json_decode()' действительно должен быть первым ответом. –

0

Ответ в JSON.

Если вы просто хотите получить значение _visitor_alertsUnread, вы можете сделать что-то вроде этого.

var JSONObj = {"error":["Security error occurred. Please press back, refresh the page, and try again."],"templateHtml":"\n\n\n\n\t</a>\n\t\n\t\tThe following error occurred:</h2>\n\t\t\n\t\t\n\t\t\n\t\t\tSecurity error occurred. Please press back, refresh the page, and try again.</label>\n\t\t\n\t\t</div>\n\t\n</div>","_visitor_conversationsUnread":"0","_visitor_alertsUnread":"0"}; 

alert(JSONObj._visitor_alertsUnread);