Добрый всем день. Столкнулся с интересной ситуацией, хотелось бы вашей помощи.
Я только начинаю копаться в Web-программировании (стаж не более 4-х месяцев), занимаюсь всем, чем придётся (вёрстка, js, php, и т.п.).
Суть вопроса.
Есть следующий php-код:
<?php
$ch = curl_init();
$url="url скрыт";
$param="{\r\n\"Request_id\": \"необходимый id\",\r\n\"Method\": \"getCities\",\r\n\"Parameters\": {\r\n}\r\n}\r\n";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$param);
// curl_setopt($ch, CURLOPT_CERTINFO,true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD,"login:password");
curl_setopt($ch, CURLOPT_COOKIEFILE,"cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEJAR,"cookie.txt");
$result = curl_exec($ch);
var_dump($result);
curl_close($ch);
?>
Данный запрос отправляется на сервер, от которого мы получаем список имеющихся на базе городов. Ответ, находящийся в $result, выглядит следующим образом:
string(267) "HTTP/1.1 200 OK Date: Thu, 04 Apr 2019 06:31:15 GMT Server: Apache Content-Length: 142 Content-Type: application/json { "Request_id": "id", "Parameters": [ "Город1", "Город2" ], "Error": 0 }"
Собственно, вся проблема в том, чтобы вытащить из этого ответа всё, что находится в массиве Parameters.
Единственный способ, до которого пока я допёр - вручную парсить и разбивать при помоищ strpos, substr, и str_replace. Но возникает проблема при других запросах, например, вместо метода getCities будет метод getCars, у которых явно будет больше характеристик, чем одна (и, получается, массив parameters будет содержать внутри себя ещё массивы, и т.п.). Есть ли другие способы, более оптимальные и простые?