Метод:
Сначала пробует сделать file_get_contents если не получается то curl, file_get_contents вываливается с ошибкой:
[18-Apr-2023 19:13:19 Europe/Moscow] PHP Warning: file_get_contents(http://geocode-maps.yandex.ru/1.x/?apikey=API_KEY&geocode=%D0%A5%D0%B8%D0%BC%D0%BA%D0%B8): failed to open stream: HTTP request failed!
/**
* @param string $url
* @param int $timeout
* @return bool|SimpleXMLElement
*/
private function simpleXmlLoadFileFromUrl(string $url, int $timeout = 20) {
$opts = ['http' => ['timeout' => (int)$timeout]];
$context = stream_context_create($opts);
$data = file_get_contents($url, false, $context);
if (!$data) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
if ($data)
return simplexml_load_file($data);
}
return simplexml_load_string($data);
}
Получается такая API ссылка:
https://geocode-maps.yandex.ru/1.x/?apikey=API_KEY...
И далее api yandex'a почему то не понимает что
& это &
В самом $url указано правильно, но как только curl вызывает эту ссылку там уже идет
&