2016-07-28 28 views
2

Also, das Problem in dieser Linie istfile_get_contents falsch, wenn url Räume haben (kodieren alles nicht funktioniert)

$imageString = file_get_contents($image_url); 

mit URLs, die Leerzeichen haben es nicht funktioniert. Aber wenn ich mache

$imageString = file_get_contents(urlencode($image_url)); 

Nichts funktioniert. Ich halte falsch in der Variable.

die ULR ist von der Art:

https://s3-eu-central-1.amazonaws.com/images/12/Screenshot from 2016-04-28 18 15:54:20.png 
+0

Niemals jemals Leerzeichen in Dateinamen an erster Stelle verwenden !!! Nur "Windows" tut dies manchmal standardmäßig. – JustOnUnderMillions

+0

So funktioniert es, wenn die Bilddateinamen keine Leerzeichen haben? – apokryfos

+0

Ja, tut es. Und wenn ich kodiere, kehrt alles falsch zurück. –

Antwort

6

Verwendung dieser Funktion

function escapefile_url($url){ 
    $parts = parse_url($url); 
    $path_parts = array_map('rawurldecode', explode('/', $parts['path'])); 

    return 
    $parts['scheme'] . '://' . 
    $parts['host'] . 
    implode('/', array_map('rawurlencode', $path_parts)) 
    ; 
} 


echo escapefile_url("http://example.com/foo/bar bof/some file.jpg") . "\n"; 
echo escapefile_url("http://example.com/foo/bar+bof/some+file.jpg") . "\n"; 
echo escapefile_url("http://example.com/foo/bar%20bof/some%20file.jpg") . "\n"; 
+0

Das funktioniert gut! Vielen Dank –

+0

es funktioniert gut, danke –

0

Sie bekommen falsch, weil Ihre URL Antwort mit Status-301 (Dauerhaft verschoben), die Sie umleitet. Wenn Sie beim Zugriff auf diese URL dennoch etwas abrufen möchten, verwenden Sie den Stream-Kontext, um der Weiterleitung zu folgen.

$context = stream_context_create(
    array(
     'http' => array(
      'follow_location' => false 
     ) 
    ) 
); 

$html = file_get_contents('http://www.example.com/', false, $context);