2013-06-18 15 views

答えて

4

これを試してください:あなたはスラッシュ記号の最後に出現を探している

$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です。

+1

")" 終わりに:)あなたは答えをupvoteすることができます@WinstonSmith –

+1

;) – ducin

+0

私は考えもファイル名にはurlencodeの代わりにrawurlencodeを使用してください –

0

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

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

$newFileName = urlencode($filename); 

$myNewUrl = implode('/', array_push($newFileName)); 
+0

これは遅い解決策です。文字列を配列にダンプする必要はありません。 – ducin

0

here's whyあなたの代わりにurlencoderawurlencodeを使用する必要があります。

あなたの質問に答えるには、乾草の針を探して、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

関連する問題