2013-03-27 64 views
-1

我有一個從URL獲取圖像的問題。我使用的是file_put_contents,我發現這個問題是圖像url中的空白,因爲沒有任何空格的圖像正在工作。file_put_contents和圖像網址空白

我得到的圖像的URL看起來是:

/support/member_profile/16-New%20Image%20(With%20Logo)%20(Medium).jpg 

我試圖用urlencode(),但它仍然沒有工作。如果我回顯編碼的網址,我會得到:

%2Fsupport%2Fmember_profile%2F16-New+Image+%28With+Logo%29+%28Medium%29.jpg 

我該如何解決該問題?在此先感謝

編輯:

我想通了,我需要有20%只替換空格。當使用urlencode時,它會對整個網址進行編碼,這就是爲什麼它不起作用。

任何提示如何做到這一點?由於

回答

0

你應該只URL編碼的文件名,而不是整個路徑,包括斜槓:

$path = '/support/member_profile/16-New Image (With Logo) (Medium).jpg'; 
$p = pathinfo($path, PATHINFO_DIRNAME); 
$f = pathinfo($path, PATHINFO_FILENAME); 
$e = pathinfo($path, PATHINFO_EXTENSION); 

echo sprintf('%s/%s.%s', $p, urlencode($f), urlencode($e)); 

而且,實際上,你需要來urlencode每個路部分爲好。

$path = '/support/member profile/16-New Image (With Logo) (Medium).jpg'; 
$p = explode('/', $path); 

foreach ($p as $pp) 
    $pathparts[] = urlencode($pp); 

echo implode('/', $pathparts); 
1

使用urldecode%20轉換成真正的空間。
然後您可以撥打file_put_contents

+0

您不應該使用urldecode作爲url%20,因爲在PHP中,%20spaces應該已經被解碼。恐怕這個問題可能有點不太清楚。 – RobIII 2013-03-27 15:47:03