2016-11-17 88 views
2

我試圖將文件名解析爲url字符串。如何正確地對字符串進行網址編碼

的文件名是:

201-SALÃO DE JOGOS.jpg 

我需要的輸出是正是這一點:

201-SAL%c3O%20DE%20JOGOS.jpg 

我想是這樣的:

$var = 201-SALÃO DE JOGOS.jpg; 
echo urlencode($var); 

而是將其返回:

201-SAL%C3%83O+DE+JOGOS.jpg 

這不是一個有效的網址。我已經嘗試過htmlspecialchars()htmlentities(),但這些都不起作用。

+3

就是這樣。爲什麼不呢? – PeeHaa

+0

我需要像'%20'這樣的空格而不是'+'。這是唯一的問題 –

+0

我能理解你爲什麼要'%20'不是'+'嗎? @IvanMoreira – SaidbakR

回答

2

你需要rawurlencode

$filename = "201-SALÃO DE JOGOS.jpg"; 
print rawurlencode($filename); 
+0

'mb_rawurlencode'是無稽之談; 'rawurlencode'工作在字節級別,根本不關心編碼。事實上,兩種功能的結果都是相同的。我不知道爲什麼那個評論者認爲mb變體會以任何方式有用。 – deceze

+1

@deceze:好的。感謝您的更新。刪除了評論。 –

+0

非常感謝!我的代碼現在是'$ var ='201-SALÃODE JOGOS.jpg'; echo rawurlencode(utf8_decode($ var));' –

0

你可以能夠使用str_replace更換+%20: 「這不是一個有效的URL」

<?php 

$var = "201-SALÃO DE JOGOS.jpg"; 
$output = str_replace('+','%20',urlencode($var)); 
echo $output; 
echo "*****"; 
echo urldecode($output); 
?> 
相關問題