urlencode only the directory and file names of a URL

后端 未结 5 1864
生来不讨喜
生来不讨喜 2021-02-20 08:18

I need to URL encode just the directory path and file name of a URL using PHP.

So I want to encode something like http://example.com/file name and have it r

5条回答
  •  谎友^
    谎友^ (楼主)
    2021-02-20 08:53

    As you say, something along these lines should do it:

    $parts = parse_url($url);
    if (!empty($parts['path'])) {
        $parts['path'] = join('/', array_map('rawurlencode', explode('/', $parts['path'])));
    }
    $url = http_build_url($parts);
    

    Or possibly:

    $url = preg_replace_callback('#https?://.+/([^?]+)#', function ($match) {
               return join('/', array_map('rawurlencode', explode('/', $match[1])));
           }, $url);
    

    (Regex not fully tested though)

提交回复
热议问题