2009-05-22 1 views
2

У меня есть строка URL, как это:Как отправить URL (с vars в нем) как один var?

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

Мне нужно отправить этот адрес из AJAX в PHP скрипт в качестве одной переменной строки.

У меня возникли проблемы, потому что он продолжает разделяться на несколько варов из-за варов в самой строке url. Имеют смысл? Как я могу отправить это как одну строку?

Спасибо !!!

ответ

6

Вам нужно кодировать.

В PHP: urlencode()

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

В Javascript: encodeURIComponent

str = encodeURIComponent('http://...'); 
+0

Спасибо, мне нужно «расшифровать» в php, но я понял! –

+2

Хм ... если вы передаете его, хотя в GET или POST, тогда PHP должен расшифровать его для вас. – Greg

4

Необходимо указать urlencode URL. Затем вы получите 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

-1

также, вы можете попробовать шифрование (например, base64)

+3

base64 не шифруется –

+0

Право, а не шифрование. И ... хе .. сторонняя base64 на JS для кодирования URL ... почему? – Jet

+0

@Tahir Akthar; вы правы, я плохой! Я прочитал сообщение, все неправильно, и добавил глупый ответ :) – Jake

1

Я думаю, вам нужно бежать() в JavaScript, как этот

побег ("сх = 017840637368510444960: ny1lmky7r -0 & client = google-csbe & output = xml_no_dtd & q = simon + g " )

Редактировать: Я только что искал и обнаружил, что encodeURIComponent() - лучшее решение.

См http://xkr.us/articles/javascript/encode-compare/ для хорошего сравнения побега(), encodeURI() и encodeURIComponent()

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"]); 
}