Как кодировать URL используя php как браузеры - PullRequest
9 голосов
/ 26 марта 2011

У меня есть такой URL-адрес

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

Я хочу скопировать этот файл на мой сервер, используя функцию copy в php.Поэтому первое, что нужно сделать, это закодировать (я думаю, что браузеры делают то же самое)

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

Но если я использую функцию urlencode , полный URL будет закодирован в

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

, который больше не является URL-адресом, а не тем, что я хочу.

Любая помощь?

1 Ответ

9 голосов
/ 26 марта 2011

Итак, другие ответы здесь в значительной степени проигнорировали ваш пост, кажется.Будем надеяться, что я не сделал то же самое.

Мне кажется, что вы хотите только закодировать базовое имя?Если это правда, эта специальная функция должна сделать свое дело:

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
...