我正在尝试解析来自API的json响应但是购买了一些我创建的现有PHP代码,但是我遇到了困难。这是json的回应
"response":{
"status":"ok",
"userTier":"free",
"total":10,
"startIndex":1,
"pageSize":10,
"currentPage":1,
"pages":1,
"results":[{
"id":"lifeandstyle/series/cycling",
"type":"series",
"webTitle":"Cycling",
"webUrl":"http://www.guardian.co.uk/lifeandstyle/series/cycling",
"apiUrl":"http://content.guardianapis.com/lifeandstyle/series/cycling",
"sectionId":"lifeandstyle",
"sectionName":"Life and style"
}
尝试解析“webTitle”和“webUrl”部分中的所有信息
<?php
require_once 'Zend/Json.php';
$val = Zend_Json::decode($result);
$arr = $val;
if(preg_match_all("~<p>([\s\S]*?)</p>~i", $arr['parse']['text']['*'], $matches)){
if(is_array($matches[1])) foreach($matches[1] as $paragraph){
echo $paragraph;
}
}
?>
此代码只解析p标签中的内容,我该如何更改?
由于
答案 0 :(得分:2)
我不是100%明确你的问题。 Zend_Json :: decode使用了引擎盖下的json_decode,这就是@psion所指的内容。我假设你的例子中有 $ result
$val = Zend_Json::decode($result);
预先保存你粘贴的json。
在我看来,您发布的json无效或至少不完整(因为缺少] 且缺少} )。我不确定这与解析 p 标签有什么关系,但无论如何这里是一个解析json并提取你感兴趣的组件的例子。它剥离了领先的“在解码之前响应“:位来自json。
<?php
$sJson = '"response":{
"status":"ok",
"userTier":"free",
"total":10,
"startIndex":1,
"pageSize":10,
"currentPage":1,
"pages":1,
"results":[{
"id":"lifeandstyle/series/cycling",
"type":"series",
"webTitle":"Cycling",
"webUrl":"http://www.guardian.co.uk/lifeandstyle/series/cycling",
"apiUrl":"http://content.guardianapis.com/lifeandstyle/series/cycling",
"sectionId":"lifeandstyle",
"sectionName":"Life and style"
}]}';
$sJson = substr($sJson, strpos($sJson, ':') + 1);
// feel free to replace json_decode w/ Zend_Json::decode
$aNative = json_decode($sJson);
$sWebTitle = $aNative->results[0]->webTitle;
$sWebUrl = $aNative->results[0]->webUrl;
echo 'Web Title: ' . $sWebTitle . PHP_EOL;
echo 'Web URL : ' . $sWebUrl . PHP_EOL;
这是脚本
的输出Web Title: Cycling
Web URL : http://www.guardian.co.uk/lifeandstyle/series/cycling
答案 1 :(得分:0)
你是什么意思解析?您可以在解码后立即使用JSON回复。您没有$arr['parse']...
$arr['webTitle']
,其中包含“骑行”。你想在“骑自行车”中解析什么?
此外,将结果分配给$ val然后将$ val分配给$ arr的处理是什么?直接分配给$ arr。
执行print_r($ val)并查看你拥有的内容。这样可以让您更好地了解自己需要做什么。很可能你的事情比他们需要的更复杂。
答案 2 :(得分:0)
PHP中的json函数不需要调用Zend函数。