Я пытаюсь получить изображения с удаленного сервера с помощью file_get_contents
. URL-адрес изображения может содержать пробелы и / или специальные символы, такие как ý, á, í и т. Д., И когда он выполняет операцию с кодом HTTP 400 – Bad Request. Если я попытаюсь закодировать url (или сегменты этого URL), используя urlencode
или rawurlencode
, я получаю 404.
Когда URL-адрес изображения не содержит пробелов или специальных символов, он загружается без проблем.
У меня есть догадка, что это имеет какое-то отношение к кодированию, но я просто не могу понять это. Есть ли способ кодирования, который мне не хватает? Есть ли заголовок, который должен быть установлен для запроса?
Проблема с file_get_contents – это кодировка UTF-8 (еще не реализована на PHP). Если вы хотите загрузить файл с помощью этой функции, вам нужно сделать что-то подобное на своем URL-адресе:
$url_utf8 = rawurlencode(utf8_encode($url));
И после:
$content = file_get_contents($url_utf8);