2012-05-01 18 views
6

Ich versuche, Bilder von einem Remote-Server mit file_get_contents zu erhalten. Eine URL zu einem Bild kann Leerzeichen und/oder Sonderzeichen wie ý, á, í usw. enthalten, und wenn dies der Fall ist, schlägt die Operation mit einem HTTP-Code 400 - Bad Request fehl. Wenn ich versuche, die URL (oder Segmente dieser URL) zu codieren, unter Verwendung urlencode oder rawurlencode, bekomme ich einen 404.file_get_contents - Sonderzeichen in URL

Wenn die Bild-URL keine Leerzeichen oder spezielle Zeichen enthält, wird es ohne Probleme heruntergeladen.

Ich habe eine Ahnung, dass dies etwas mit Codierung zu tun hat, aber ich kann es einfach nicht herausfinden. Gibt es eine Kodierungsoption, die ich vermisse? Gibt es einen Header, der für die Anfrage gesetzt werden muss?

+2

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

+1

alickus: Das ist nicht wirklich Bei einem Duplikat handelt es sich bei der von Ihnen verknüpften Frage um UTF-8 im Antwortinhalt und nicht um die URL. – Kaivosukeltaja

+1

Öffnen Sie das Bild in Ihrem Browser. Sehen Sie, wie der Browser die URL codiert. Dann sehen Sie die Ausgabe von echo urlencode ($ url); 'und finden Sie Unterschiede – galymzhan

Antwort

1

Das Problem mit file_get_contents ist die UTF-8-Codierung (noch nicht in PHP implementiert haben) Wenn Sie mit dieser Funktion herunterladen Datei wollen, müssen Sie etwas wie das auf Ihrer URL tun:

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

Und nach:

$content = file_get_contents($url_utf8);

+1

Dies kann zu unvorhergesehenen Ergebnissen führen, wenn die PHP-Datei nicht als ISO-8859-1 gespeichert wird. –

Verwandte Themen