2009-05-22 2 views
2

私はこのようなURL文字列を持っている:URLを1つのvarとして送信するにはどうすればいいですか?

http://www.google.com/cse?cx=017840637368510444960:ny1lmky7r-0&client=google-csbe&output=xml_no_dtd&q=simon+g 

私は、単一の文字列変数としてPHPスクリプトにAJAXからこのURLを送信する必要があります。

URL文字列自体のvarsのためにいくつかのvarsに分割され続けるため、私は問題があります。理にかなっている?これを単一の文字列としてどのように送ることができますか?

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

答えて

6

あなたはそれをエンコードする必要があります。 PHPで

:JavaScriptでurlencode()

$str = urlencode('http://....'); 

:encodeURIComponentで

str = encodeURIComponent('http://...'); 
+0

ありがとう、私はPHPで '解読'する必要がありますが、私はそれを持っています! –

+2

ええと...あなたがGETまたはPOSTでそれを渡しているなら、PHPはそれをデコードしなければなりません。 – Greg

4

あなたはURLをurlencodeする必要があります。それを受け取るページのurldecodeになります。

だから、URLも

http%3A%2F%2Fwww.google.com%2Fcse%3Fcx%3D017840637368510444960%3Any1lmky7r-0%26client%3Dgoogle-csbe%26output%3Dxml_no_dtd%26q%3Dsimon%2Bg%0D%0A 
+0

なぜdownvote? – Jab

1

escape()またはencodeURIComponent()

-1

なる、あなたは(BASE64のような)暗号化を試みることができる

+3

base64は暗号化されていません –

+0

暗号化されていません。そして... heh ..サードパーティのBase64でJSをURLにエンコードするのはなぜですか? – Jet

+0

@Tahir Akthar;あなたは正しい、私の悪いです! 私はすべての間違った投稿を読んで、愚かな答えを追加しました:) – Jake

1

は、私はあなたが(エスケープする必要があると思います)この

エスケープ(「CX = 017840637368510444960のようなJavaScriptで:ny1lmky7r -0 &クライアント= google-csbe &出力= xml_no_dtd & q = simon + g " )

編集:私はちょうど検索し、encodeURIComponent()が最適なソリューションであることを発見しました。

はエスケープ()、encodeURI()とencodeURIComponentでの素敵な比較のためにhttp://xkr.us/articles/javascript/encode-compare/を見る()

1
<?php 
// In your URL-emitter page 
$decoded_url = "http://www.google.com/cse?cx=017840637368510444960:ny1lmky7r-0&client=google-csbe&output=xml_no_dtd&q=simon+g"; 
$link_addr = "/index.php?encodedurl=".urlencode($decoded_url); 

echo '<a href="'.$link_addr.'">Click me</a>'; 


// in your URL-reciever page (here the same page) 
if(array_key_exists("encodedurl",$_GET)) { 
    echo 'decoded url='.urldecode($_GET["encodedurl"]); 
} 
関連する問題