2009-05-22 33 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"]); 
} 
相關問題