Как отправить URL (с переменными в нем) как одну переменную? - PullRequest
2 голосов
/ 22 мая 2009

У меня есть строка URL, как это:

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

Мне нужно отправить этот URL из ajax в скрипт php в виде строковой переменной.

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

Спасибо !!!

Ответы [ 6 ]

6 голосов
/ 22 мая 2009

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

В PHP: urlencode()

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

В Javascript: encodeURIComponent

str = encodeURIComponent('http://...');
4 голосов
/ 22 мая 2009

Вам необходимо urlencode URL. Затем вы получите urldecode на странице, которая его получила.

Так что URL станет

http%3A%2F%2Fwww.google.com%2Fcse%3Fcx%3D017840637368510444960%3Any1lmky7r-0%26client%3Dgoogle-csbe%26output%3Dxml_no_dtd%26q%3Dsimon%2Bg%0D%0A
1 голос
/ 22 мая 2009
<?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"]);
}
1 голос
/ 22 мая 2009

Я полагаю, вам нужно бежать () в javascript, как это

побег ( "сх = +017840637368510444960: ny1lmky7r-0 & клиент = Google-& выход Пользовательский поиск для компаний = xml_no_dtd & д = симон + д" )

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

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

1 голос
/ 22 мая 2009

escape() или encodeURIComponent()

0 голосов
/ 22 мая 2009

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

...