http://www.example.com/some_folder/some file [that] needs "to" be (encoded).zip
urlencode($myurl);
问题在于urlencode
也会对斜杠进行编码,导致URL无法使用。我该如何只对最后一个文件名进行编码?
试一下:
$str = 'http://www.example.com/some_folder/some file [that] needs "to" be (encoded).zip';
$pos = strrpos($str, '/') + 1;
$result = substr($str, 0, $pos) . urlencode(substr($str, $pos));
你正在寻找斜杠符号的最后一次出现。它之前的部分没问题,只需复制即可。并对剩余部分进行urlencode
处理。rawurlencode
而不是urlencode
。<?php
$myurl = 'http://www.example.com/some_folder/some file [that] needs "to" be (encoded).zip';
$myurl = rawurlencode($myurl);
$myurl = str_replace('%3A',':',str_replace('%2F','/',$myurl));
结果为:
从中提取文件名并对其进行转义。
$temp = explode('/', $myurl);
$filename = array_pop($temp);
$newFileName = urlencode($filename);
$myNewUrl = implode('/', array_push($newFileName));
function urlencode_url($url) {
return str_replace(['%3A','%2F'], [':', '/'], rawurlencode($url));
}