2

我有一个这样的 url 字符串:

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

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

但是我遇到了麻烦,因为由于 url 字符串本身的变量,它一直被分成几个变量。有道理?如何将其作为单个字符串发送?

谢谢!!!

4

6 回答 6

6

您需要对其进行编码。

在 PHP 中:urlencode()

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

在 Javascript 中:encodeURIComponent

str = encodeURIComponent('http://...');
于 2009-05-22T14:10:20.833 回答
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
于 2009-05-22T14:09:24.690 回答
1

escape()或者encodeURIComponent()

于 2009-05-22T14:09:45.250 回答
1

我想你需要像这样在 javascript 中进行 escape()

转义(“cx=017840637368510444960:ny1lmky7r-0&client=google-csbe&output=xml_no_dtd&q=simon+g”)

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

请参阅http://xkr.us/articles/javascript/encode-compare/以获得对 escape()、encodeURI() 和 encodeURIComponent() 的一个很好的比较

于 2009-05-22T14:11:02.597 回答
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"]);
}
于 2009-05-22T14:21:42.903 回答
-1

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

于 2009-05-22T14:10:00.133 回答