2016-07-28 5 views
2

だから、問題は、それが動作しない空白文字を持っているURLでこのラインのfile_get_contents偽のURLにスペースを(動作していないすべてのものをエンコード)

$imageString = file_get_contents($image_url); 

である持っている場合。しかし、私が作った場合

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

何も働いていません。私は変数でfalseを受け取り続けます。

ULRは種類のものである:

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

最初にファイル名にスペースを使用しないでください!デフォルトでは、 'Windows'だけがこれを時々実行します。 – JustOnUnderMillions

+0

イメージファイル名に空白が含まれていないと動作しますか? – apokryfos

+0

はい、あります。私がエンコードすると、すべてがfalseを返します。 –

答えて

6

使用この機能を

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

それはうまく動作します! –

+0

ありがとうございます、ありがとうございます –

0

あなたをリダイレクトステータス301(永久移動)を使用してURLを返信するので、偽取得しています。 このURLにアクセスしたときに何かを取得したい場合は、ストリームコンテキストを使用してリダイレクトに従います。

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

$html = file_get_contents('http://www.example.com/', false, $context); 
関連する問題