2012-11-17 23 views
1

我在變量的值如下...空間由「+」在鏈路替換在PHP

$variable = "chicken soup.jpg"; 

當i執行以下操作,空間被轉換爲+符號在輸出

$body = "www.abc.com/" . $variable 
mail($to, $subject, $body,$headers) 

輸出在郵件中收到:www.abc.com/chicken+soup.jpg

但我想輸出如下?請幫助

預期輸出:www.abc.com/chicken%20soup.jpg或 www.abc.com/chicken soup.jpg

我試着用str_replace函數功能但沒有運氣

+0

它是'$變量= 「雞soup.jpg」;' – tobspr

+0

你說的「正常工作意味着什麼「?你的預期產出是多少? – Maccath

+0

,你錯過了分號。 – tobspr

回答

3

我敢肯定,如果你的電子郵件客戶端支持查看該消息的普通來源,你會認爲該網址是"www.abc.com/chicken soup.jpg";只有您的瀏覽器/電子郵件客戶端對其進行編碼,因爲它是無效的URL。

$body = 'www.abc.com/' . urlencode($variable); 
// this will be 'www.abc.com/chicken+soup.jpg' as this is a valid url 

或:

$body = 'www.abc.com/' . rawurlencode($variable); 
// this will be 'www.abc.com/chicken%20soup.jpg' 

編輯

你可以閱讀更多關於差異

如果你想產生一個有效的URL,以手動對其進行編碼:

0

這是因爲所有的url都被編碼。這可能是您的電子郵件客戶端收到'chicken soup.jpg',但將其解析爲網址,因此它會得到'chicken + soup.jpg',因爲網址中的''無效。

+0

我應該如何糾正它?我的意思是,我希望它應該是因爲它是變量..所以我可以發送適當的電子郵件。 – logan

+0

這是正確的..空格是錯誤的,'+'是正確的。 – tobspr

+0

www.abc.com/chicken+soup.jpg在瀏覽器中不起作用... www.abc.com/chicken soup.jpg正在瀏覽器中工作... – logan

2

您的解決方案是在文件名變量上使用urlencode()。這會將空格和其他非URL友好字符轉換爲%20等,以便它可以用作有效URL的一部分。

$variable = urlencode("chicken soup.jpg"); echo $variable; 

輸出

chicken%20soup.jpg 

檢查的urlencode()文檔的詳細信息。