我有一个像这样的网址字符串:
http://www.google.com/cse?cx=017840637368510444960:ny1lmky7r-0&client=google-csbe&output=xml_no_dtd&q=simon+g
我需要将这个url从ajax发送到php脚本作为单个字符串变量。
我遇到了麻烦,因为它因为url字符串本身的变量而不断分裂成几个变量。合理?如何将其作为单个字符串发送?
感谢!!!
答案 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)