Как из ответа curl с заголовками получить 2 переменные?

Ребята, подскажите как из строки вида:
HTTP/1.1 200 OK Server: nginx Date: Fri, 24 Jun 2016 00:12:40 GMT Content-Type: application/json;charset=UTF-8 Content-Length: 181 Connection: keep-alive Keep-Alive: timeout=120 Vary: Accept-Encoding Cache-Control: no-cache {"account":"789797078","balance":0.00,"currency":"643","identified":false,"account_type":"personal","account_status":"named","balance_details":{"total":0.00,"available":0.00}}
Получить 2 переменные: HTTP-код ответа (в данном случае 200) и "balance"?
  • Вопрос задан
  • 424 просмотра
Решения вопроса 1
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
Код состояния можно получить проще - через curl_getinfo($curl, CURLINFO_HTTP_CODE);

А вот для balance понадобится отключить вывод заголовков в ответе. Тогда можно будет распарсить json:

$json = json_decode($curlRes, true);

$balance = $json["balance"];
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
alsopub
@alsopub
$s = 'HTTP/1.1 200 OK Server: nginx Date: Fri, 24 Jun 2016 00:12:40 GMT Content-Type: application/json;charset=UTF-8 Content-Length: 181 Connection: keep-alive Keep-Alive: timeout=120 Vary: Accept-Encoding Cache-Control: no-cache {"account":"789797078","balance":0.00,"currency":"643","identified":false,"account_type":"personal","account_status":"named","balance_details":{"total":0.00,"available":0.00}}';

preg_match('/^HTTP\/\d+\.\d+\s+(\d+)/', $s, $r);
$code = $r[1];

preg_match('/"balance":([\d\.]+)/', $s, $r);
$balance = $r[1];

echo($code.' '.$balance);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы