Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to encode URL using php like browsers do

I have an URL like this

http://www.example.com/Data/image/office-dôn-sì-à.jpg

I want to copy that file to my server using copy function in php. So the first thing is to encode it to this (I think browsers do the same thing)

http://www.example.com/Data/image/office-d%C3%B4n-s%C3%AC-%C3%A0.jpg

But if I use function urlencode, full url will be encoded to

http%3A%2F%2Fwww.example.com%2FData%2Fimage%2Foffice-d%C3%B4n-s%C3%AC-%C3%A0.jpg

which is not an URL anymore and not what I want.

Any help?

like image 806
user342960 Avatar asked Mar 26 '11 10:03

user342960


1 Answers

So, the other answers here have largely ignored your post, it seems. Let's hope I have not done the same.

It seems to me that you only want to encode the basename? If that is true, this ad-hoc function should do the trick:

function encode_basename($url) {
    $url = explode('/', $url);
    $base = array_pop($url);

    return implode('/', $url) . '/' . urlencode($base);
}
//returns: http://www.example.com/Data/image/office-d%25C3%25B4n-s%25C3%25AC-%25C3%25A0.jpg
like image 107
Russell Dias Avatar answered Sep 23 '22 08:09

Russell Dias