http://www.example.com/some_folder/some file [that] needs "to" be (encoded).zip
urlencode($myurl);
urlencode
は、スラッシュをエンコードしてURLを使用できなくするという問題があります。最後のファイル名をどのようにエンコードすることができますか?PHP urlencode - ファイル名のみをエンコードし、スラッシュには触れない
http://www.example.com/some_folder/some file [that] needs "to" be (encoded).zip
urlencode($myurl);
urlencode
は、スラッシュをエンコードしてURLを使用できなくするという問題があります。最後のファイル名をどのようにエンコードすることができますか?PHP urlencode - ファイル名のみをエンコードし、スラッシュには触れない
これを試してください:あなたはスラッシュ記号の最後に出現を探している
$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
です。
ファイル名を引き出してエスケープします。まず
$temp = explode('/', $myurl);
$filename = array_pop($temp);
$newFileName = urlencode($filename);
$myNewUrl = implode('/', array_push($newFileName));
これは遅い解決策です。文字列を配列にダンプする必要はありません。 – ducin
、here's whyあなたの代わりにurlencode
のrawurlencode
を使用する必要があります。
あなたの質問に答えるには、乾草の針を探して、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));
結果:欠落していると完全に協力
")" 終わりに:)あなたは答えをupvoteすることができます@WinstonSmith –
;) – ducin
私は考えもファイル名にはurlencodeの代わりにrawurlencodeを使用してください –