Win*_*ith 7 php url encoding encode urlencode
http://www.example.com/some_folder/some file [that] needs "to" be (encoded).zip
urlencode($myurl);
Run Code Online (Sandbox Code Playgroud)
问题是,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));
Run Code Online (Sandbox Code Playgroud)
您正在寻找最后一次出现的斜线标志.它之前的部分是可以的,所以只需复制即可.和urlencode休息.
首先,这就是为什么你应该使用rawurlencode而不是urlencode.
要回答您的问题,与其在大海捞针中寻找针头并冒着不在您的 URL 中编码其他可能的特殊字符的风险,不如对整个内容进行编码,然后修复斜线(和冒号)。
<?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));
Run Code Online (Sandbox Code Playgroud)
结果如下: