Попробуйте следующее:
$photourl = 'https://example.com/some/path/name-of-image-with‘quotes’.jpg';
$filename = basename($photourl);
$photourl = str_replace($filename, urlencode($filename), $photourl); //Replace file name wirth url encoded filename
$array = [
'chat_id' => $uid,
'photo' => $photourl,
'caption' => $caption
];
file_get_contents("https://api.telegram.org/bot$api/sendPhoto?" . http_build_query($array));
Использование таких символов, как ’
, ‘
или *
в параметре photo
, кажется, вызывает проблему.
У меня нет никаких объяснений, почему возникает эта ошибка или как ее исправить. Но вы можете URL-адрес кодировать часть имени файла URL-адреса, прежде чем передавать свой запрос в http_build_query()
(который закодирует его даже во второй раз).