如何解决在PHP中解析HTTP api响应字符串
响应HTTP请求,我得到以下字符串:
int**
它不是JSON,我不认为这是一个数组,那是什么?
如何访问某个值,即status.Postion [2]? 谢谢。
解决方法
这似乎可以满足您的要求。我们需要使用爆炸将所有部分分离出来,并合并为一个数组。某些数据本身似乎是数组的一部分,例如“ status.Postion [1] = 3.060000”,因此我们通过preg_match进行嗅探,并使用array_merge_recursive来确保将它们聚集在一起。
<?php
$response = 'status.Action=Unknown status.ActionID=0 status.Focus.FocusPosition=0.000000 status.Focus.Status=Idle status.FocusMapValue=4096 status.Iris.IrisValue=0.000000 status.Iris.Status=Idle status.MoveStatus=Idle status.PanTiltStatus=Idle status.Postion[0]=104.350000 status.Postion[1]=3.060000 status.Postion[2]=6.656000 status.PresetID=0 status.TaskName=Unknown status.TrackStatus=Idle status.ZoomMapValue=1858 status.ZoomStatus=Idle status.ZoomValue=120';
$status = array();
foreach (explode(' ',$response) as $item)
{
$items = explode('=',$item);
$value = $items[1];
$props = explode('.',$items[0]);
$data = array();
for ($i = count($props) - 1; $i > 0; $i--)
{
if ($i == count($props) - 1)
{
if (preg_match('/([A-Za-z\.]+)\[([0-9]+)\]/',$props[$i],$matches))
{
$data[$matches[1]] = array((int)$matches[2] => $value);
}
else {
$data[$props[$i]] = $value;
}
}
else
{
$data[$props[$i]] = $data;
}
}
$status = array_merge_recursive($status,$data);
}
echo $status['Focus']['FocusPosition'].'<br>';
echo $status['Postion'][1].'<br>';
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。