2009-05-22 71 views
2

我有一个URL字符串是这样的:如何将URL(包含变量)作为单个var发送?

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

我需要从AJAX发送URL以便PHP脚本作为一个字符串变量。

虽然我遇到了麻烦,因为它由于url字符串本身中的变量而不断分裂成多个变量。合理?我怎样才能把它作为一个单一的字符串?

谢谢!

回答

6

你需要对其进行编码。

在PHP:urlencode()

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

在Javascript中:encodeURIComponent方法

str = encodeURIComponent('http://...'); 
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 
+0

为什么downvote? – Jab 2009-05-22 14:46:10

1

escape()encodeURIComponent()

-1

也,你可以尝试加密(如BASE64)

+3

base64不加密 – 2009-05-22 14:11:56

+0

正确,不是加密。而...嘿..第三方base64上的JS编码URL ...为什么? – Jet 2009-05-22 16:27:04

1

我猜你一定要逃逸()在JavaScript这样

逃生(“CX = 017840637368510444960:ny1lmky7r -0 & client = google-csbe & output = 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"]); 
} 
相关问题