如何将URL(包含vars)作为单个var发送?

时间:2009-05-22 14:06:17

标签: php ajax urlvariables

我有一个像这样的网址字符串:

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

我需要将这个url从ajax发送到php脚本作为单个字符串变量。

我遇到了麻烦,因为它因为url字符串本身的变量而不断分裂成几个变量。合理?如何将其作为单个字符串发送?

感谢!!!

6 个答案:

答案 0 :(得分:6)

您需要对其进行编码。

在PHP中:urlencode()

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

在Javascript中:encodeURIComponent

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

答案 1 :(得分:4)

您需要urlencode网址。然后,您将在收到它的页面上urldecode

所以网址会变成

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

答案 2 :(得分:1)

escape()encodeURIComponent()

答案 3 :(得分:1)

我猜你需要在这样的javascript中使用escape()

逃逸( “CX = 017840637368510444960:ny1lmky7r-0安培;客户=谷歌CSBE&安培;输出= xml_no_dtd&安培; Q =西蒙+ G” )

编辑:我刚刚搜索过,发现encodeURIComponent()是最好的解决方案。

有关escape(),encodeURI()和encodeURIComponent()的良好比较,请参阅http://xkr.us/articles/javascript/encode-compare/

答案 4 :(得分: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"]);
}

答案 5 :(得分:-1)

另外,您可以尝试加密(如base64)