$buffer='S=0&Action=Deliver&MsgId=17226&Timer=0&Imei=861251057373661&ChannelIndex=34&SaleId=dk3466155262667550&Result=1&AlarmCode=0&Laser=0&E=0S=0&Action=MotorError&MsgId=17227&Timer=0&Imei=861251057373661&ChannelIndex=34&AlarmCode=0&E=0';
$str_count=substr_count($buffer,'&E=0');
$buffer_len=strlen($buffer);
$arr=[];
$start_index=0;
for ($i=0; $i<$str_count; $i++) {
$end_index=strpos($buffer,'&E=0');
if($end_index+4==$buffer_len){
//视为最后一个包
$str=substr($buffer,$start_index);
$arr[]=$str;
break;
}else{
$next=$end_index+4;
$str=substr($buffer,$start_index,$next);
$arr[]=$str;
$start_index=$next;
}
}
foreach ($arr as $key => $value) {
$queryParts = explode('&',$value);
$params = array();
foreach ($queryParts as $param) {
$item = explode('=', $param);
$params[$item[0]] = $item[1];
}
echo "<pre/>";
var_dump($params);
}