2014-10-29 45 views
-1
HTTP API响应

我与格式如下一些网络项目的在HTTP API响应(S)处理工作:如何处理与PHP

{response_header1=value1,response_header2,value2,response_header3=value3,response_header4=,response_header5=value5} 

或者

error xxx,err_desc=Invalid password 

这些答复唐看起来不像标准XMLJSON格式。我想知道在PHP中处理这类响应的最佳方式是什么。

+0

要快得多用正则表达式 – Lorenz 2014-10-29 09:25:50

回答

0

下面的代码会处理你已经张贴在了标准的API响应您正在使用:

$var = '{response_header1=value1,response_header2,value2,response_header3=value3,response_header4=,response_header5=value5}'; 
if(strpos($var, '}') !== false) { 
    parse_str(str_replace(',','&',trim($var,'{}')), $var); 
    var_export($var); 
} else { 
    echo 'error'; 
} 

如果您需要处理具体的错误值,你可以访问并解析它们,我已经放置了echo语句。我所做的是去除左右两侧的花括号,然后将整个字符串转换为标准URL查询,该查询由parse_url命令解析并存储为key => value set(例如访问$ _POST或$ _REQUEST vars )在名为$var的变量中 - 您可以从var_export($var)命令中看到此结果。

这也比explode

0

可能需要使用正则表达式编写自定义转换器,或者需要将其转换为代码。下面是内嵌转换,无需正则表达式的例子:

$incoming = "{response_header1=value1,response_header2=value2,response_header3=value3,response_header4=,response_header5=value5}"; 
$splitted = explode(",", trim($incoming,'{}')); 

$values = array(); 
foreach($splitted as $split) { 
    $exploded = explode("=",$split); 
    $values[$exploded[0]] = $exploded[1]; 
}