2016-11-17 14 views
2

Я пытаюсь проанализировать имя файла на строку url.Как правильно 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ÃO DE 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); 
?>