2012-06-07 6 views
4

У меня есть URL с пробелами:Url Кодирование в PHP/HTML

http://mihalko.eu/image/data/ister/Nomad Plus-G- cierno cervena.jpg

(браузер может открыть эту ссылку) Что является лучшим способом urlencode этот url (пробел =% 20)?

Номад% 20Plus-G-% 20cierno% 20cervena.jpg

UrlEncode:

HTTP% 3A% 2F% 2Fmihalko.eu% 2Fimage% 2Fdata% 2Fister% 2FNomad + Плюс-G- + cierno + cervena.jpg

(браузер не может открыть эту ссылку)
UrlEncode дать мне этот результат, но мой браузер wont't о запишите этот URL.

+4

Это кодировка URL, а не HTML. – SLaks

ответ

2

Использование rawurlencode:

echo rawurlencode('Nomad Plus-G- cierno cervena.jpg'); 
// Nomad%20Plus-G-%20cierno%20cervena.jpg 

Если все в порядке с пробелами кодируются в + затем просто использовать вместо urlencode.

+0

Я отредактировал мой вопрос, но результат тот же с rawurlencode. Но почему? – Adrian

+0

@Adrian Вы не должны кодировать весь URL-адрес, а только компоненты, которые нуждаются в кодировке индивидуально. Вы не хотите кодировать все '/' s в своем URL-адресе, но если вам нужен '/' в компоненте, вы его кодируете. – Paulpro

+0

К сожалению, у меня есть несколько каталогов с пространством в их именах, и этот трюк не работает. Пожалуйста, проверьте мой комментарий ниже. – Adrian

0

Вы можете искать последний «/» и использовать UrlEncode для последней части вашей строки, как это:

$pos=strrpos($url,"/")+1; 
$newurl=substr($url,0,$pos) . rawurlencode(substr($url,$pos)); 

Если ваши проблемы только пробелы, то вы могли бы использовать

str_replace(" ","%20",$url); 
+0

Спасибо, это работает до тех пор, пока у меня не будет места в названии каталога: http://d.pr/n/uRFH+ (код с комментариями) – Adrian

0

str_replace ('% 2F', '/', rawurlencode ('url')); Это работает.

Смежные вопросы