2012-08-23 27 views
8

APIのいずれかで処理するには、エンコードされたURLが必要です。 しかし、それは例えばのためにハイフン( - )とドット(。)を含むURLをPHPでエンコード

フルエンコードされたURLが必要です。

http://test.site-raj.co/999999?lpp=1&px2=IjN 

から

URLエンコードURLに私もドット(エンコードする他のすべてのシンボルを必要とする

http%3a%2f%test%site%2draj%2eco%2f999999%3flpp%3d1%26px2%3dIjN 

以下のように。)とハイフン( - )を使用します。それを行うためのPHP /コード内の関数を教えてください。

ありがとうございました。

+0

あなたの例では、どのようなので、それにはハイフン –

+1

を持っていませんか? @MikeB – 11684

+3

@ 11684ハイフンがどのように翻訳されるのかを知る必要があります。ドットと同様に、彼はちょうど彼の予想される出力のパーセント記号でそれらを置き換えました。 –

答えて

14

これを試してください。関数内で複数回使用している可能性があります。

$str = 'http://test.site.co/999999?lpp=1&p---x2=IjN'; 
$str = urlencode($str); 
$str = str_replace('.', '%2E', $str); 
$str = str_replace('-', '%2D', $str); 
echo $str; 
+0

それはうまくなるかもしれませんが、他の特殊文字も存在する場合、 –

8

これはプレーンな文字または数字ではないすべての文字をエンコードします。あなたはまだ標準urldecodeまたはrawurldecodeでこれをデコードすることができます

function urlencodeall($x) { 
    $out = ''; 
    for ($i = 0; isset($x[$i]); $i++) { 
     $c = $x[$i]; 
     if (!ctype_alnum($c)) $c = '%' . sprintf('%02X', ord($c)); 
     $out .= $c; 
    } 
    return $out; 
} 
-3

あなたが例えばrawurlencode

を使用していないのはなぜrawurlencode("http://test.site-raj.co/999999?lpp=1&px2=IjN")

+3

http://www.php.net/rawurlencode says '-_。〜'以外の英数字以外の文字をパーセント記号(%)と2桁の16進数で置き換えた文字列を返します。それはOPが求めるものではありません。 –

関連する問題