我正在处理一些以下列格式处理HTTP API响应的Web项目:
{response_header1=value1,response_header2,value2,response_header3=value3,response_header4=,response_header5=value5}
或
error xxx,err_desc=Invalid password
这些回复看起来不像标准XML
或JSON
格式。我想知道在PHP
中处理这类响应的最佳方法是什么。
答案 0 :(得分: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];
}
答案 1 :(得分: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 =>值集(如访问$名为$var
的变量中的_POST或$ _REQUEST vars) - 您可以从var_export($var)
命令中看到此结果。
这也比explode