我有一个这样的 url 字符串:
http://www.google.com/cse?cx=017840637368510444960:ny1lmky7r-0&client=google-csbe&output=xml_no_dtd&q=simon+g
我需要将此 url 作为单个字符串变量从 ajax 发送到 php 脚本。
但是我遇到了麻烦,因为由于 url 字符串本身的变量,它一直被分成几个变量。有道理?如何将其作为单个字符串发送?
谢谢!!!
我有一个这样的 url 字符串:
http://www.google.com/cse?cx=017840637368510444960:ny1lmky7r-0&client=google-csbe&output=xml_no_dtd&q=simon+g
我需要将此 url 作为单个字符串变量从 ajax 发送到 php 脚本。
但是我遇到了麻烦,因为由于 url 字符串本身的变量,它一直被分成几个变量。有道理?如何将其作为单个字符串发送?
谢谢!!!
您需要对其进行编码。
在 PHP 中:urlencode()
$str = urlencode('http://....');
在 Javascript 中:encodeURIComponent
str = encodeURIComponent('http://...');
您需要对网址进行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
escape()
或者encodeURIComponent()
我想你需要像这样在 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() 的一个很好的比较
<?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"]);
}
另外,您可以尝试加密(如base64)