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));
スラッシュ記号の最後の出現を探しています。その前の部分はOKなのでコピペしてください。そして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));
結果は次のようになります。
ファイル名を引き抜いてエスケープします。
$temp = explode('/', $myurl);
$filename = array_pop($temp);
$newFileName = urlencode($filename);
$myNewUrl = implode('/', array_push($newFileName));