2016-11-17 9 views
2

ファイル名をurl文字列に解析しようとしています。文字列を正しくURLにエンコードする方法

ファイル名は次のとおりです。

201-SAL%c3O%20DE%20JOGOS.jpg 

私はこのようにしようとしている:

$var = 201-SALÃO DE JOGOS.jpg; 
echo urlencode($var); 

しかし、その代わりに、それは返す:

201-SALÃO DE JOGOS.jpg 

私は、出力はまさにこのことが必要

201-SAL%C3%83O+DE+JOGOS.jpg 

これは有効なURLではありません。私はすでにhtmlspecialchars()htmlentities()で試しましたが、これらは動作しません。

+3

"と、これは有効なURLではありません。"もちろんそうだ。それはなぜでしょうか? – PeeHaa

+0

空のスペースは '%20'のように' + 'でなくてはなりません。それは唯一の問題です –

+0

'%20'が' + 'ではないのはなぜ分かりますか? @IvanMoreira – SaidbakR

答えて

2

あなたは%20+を置き換えるためにstr_replaceを使用することができたrawurlencode

$filename = "201-SALÃO DE JOGOS.jpg"; 
print rawurlencode($filename); 
+0

'mb_rawurlencode'はナンセンスです。 'rawurlencode'はバイトレベルで動作し、エンコーディングはまったく気にしません。実際、両方の機能の結果は同じです。その投稿者がmbの亜種がどんな意味でも役に立つと思った理由はわかりません。 – deceze

+1

@deceze:Ok。更新していただきありがとうございます。コメントを削除しました。 –

+0

ありがとう!私のコードは '$ var = '201-SALÃODE JOGOS.jpg'です。 echo rawurlencode(utf8_decode($ var)); ' –

0

が必要になります。

<?php 

$var = "201-SALÃO DE JOGOS.jpg"; 
$output = str_replace('+','%20',urlencode($var)); 
echo $output; 
echo "*****"; 
echo urldecode($output); 
?> 
関連する問題