11
http://www.example.com/some_folder/some file [that] needs "to" be (encoded).zip
urlencode($myurl);

問題はurlencode、URL を使用できなくするスラッシュもエンコードすることです。最後のファイル名だけをエンコードするにはどうすればよいですか?

4

4 に答える 4

10

これを試して:

$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));

スラッシュ記号の最後の出現を探しています。その前の部分はOKなのでコピペしてください。そしてurlencode残り。

于 2013-06-18T22:18:54.647 に答える
6

まず、の代わりにを使用する必要がある理由は次のとおりです。rawurlencodeurlencode

あなたの質問に答えるには、干し草の山から針を探して、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));

結果は次のようになります。

http://www.example.com/some_folder/some%20file%20%5Bthat%5D%20needs%20%22to%22%20be%20%28encoded%29.zip

于 2016-06-16T19:54:43.610 に答える
0

ファイル名を引き抜いてエスケープします。

$temp = explode('/', $myurl);
$filename = array_pop($temp);

$newFileName = urlencode($filename);

$myNewUrl = implode('/', array_push($newFileName));
于 2013-06-18T22:19:08.733 に答える