2012-05-01 6 views
6

Я пытаюсь получить изображения с удаленного сервера с помощью file_get_contents. URL-адрес изображения может содержать пробелы и/или специальные символы, такие как ý, á, í и т. Д., И когда он выполняет операцию с кодом HTTP 400 - Bad Request. Если я попытаюсь закодировать URL-адрес (или сегменты этого URL-адреса), используя urlencode или rawurlencode, я получаю код 404.file_get_contents - специальные символы в URL

Когда URL-адрес изображения не содержит пробелов или специальных символов, он загружается без проблем.

У меня есть догадка, что это имеет какое-то отношение к кодированию, но я просто не могу понять это. Есть ли вариант кодирования, который мне не хватает? Есть ли заголовок, который должен быть установлен для запроса?

+2

http://stackoverflow.com/questions/2236668/file-get-contents-breaks-up-utf-8-characters –

+1

alickus: Это на самом деле не дубликат, связанный с вами вопрос касается UTF-8 в контенте ответа, а не URL-адреса. – Kaivosukeltaja

+1

Откройте это изображение в своем браузере. Посмотрите, как браузер кодирует URL. Затем просмотрите вывод 'echo urlencode ($ url);' и найдите отличия – galymzhan

ответ

1

Проблема с file_get_contents является UTF-8 кодирование (пока не реализовано в PHP) Если вы хотите скачать файл с помощью этой функции, вы должны сделать что-то подобное на вашем URL:

$url_utf8 = rawurlencode(utf8_encode($url));

И после того, как:

$content = file_get_contents($url_utf8);

+1

Это может привести к непредсказуемым результатам, если файл PHP не будет сохранен как «ISO-8859-1». –

Смежные вопросы