Как справиться с ответом HTTP API с помощью переполнения стека

Я работаю с некоторыми веб-проектами, которые имеют дело с ответами HTTP API в следующем формате:

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

Или же

error xxx,err_desc=Invalid password

Эти ответы не похожи на стандартные XML или же JSON формат. Я хотел бы знать, каков наилучший способ обработки таких ответов в PHP,

-1

Решение

Следующий код будет обрабатывать то, что вы опубликовали в качестве стандартного ответа от 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 команда и сохраняется как ключ => набор значений (например, доступ к переменным $ _POST или $ _REQUEST) в переменной с именем $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];
}
0

По вопросам рекламы [email protected]