Передача URL-адреса в качестве параметра GET в Javascript - PullRequest
10 голосов
/ 22 августа 2010

Я пытаюсь создать букмарклет, который использует текущий URL пользователя, вроде как bookmarklet tinyURL, который использует этот код javascript

javascript:void(location.href='http://tinyurl.com/create.php?url='+location.href)

Поэтому я скопировал эту же вещь и сделал

javascript:void(location.href='http://mywebsite.com/create.php?url='+location.href)

Затем я использую:

$url=$_GET['url']; 

, чтобы получить его.Проблема в том, что если я нахожусь на URL, на котором уже есть некоторая информация о стиле в URL, он все испортил.

Пример, если я нахожусь:

http://www.google.ca/webhp?um=1&hl=en&safe=off

The '_GET 'код устанавливает $ url равным

http://www.google.ca/webhp?um=1

Так что я думаю, что информация в URL-адресе Google портит весь мой URL-адрес, я думаю, что я делаю что-то очень неправильно, или у кого-то есть очень элегантное решение дляэтот.Что я должен делать?пожалуйста помогите

Ответы [ 5 ]

15 голосов
/ 22 августа 2010

URL имеет указанный формат. Эта часть после ?, или, если быть точнее, между ? и #, если она существует, называется строка запроса . Он содержит список пар ключ-значение - имя переменной, символ = и значение. Переменные разделяются &:

key1=value1&key2=value2&key3=value3&key4=value4

Вы должны экранировать location.href, поскольку может содержит некоторые специальные символы, такие как ?, & или #.

Для экранирования строки в JavaScript используйте функцию encodeURIComponent(), например:

location.href = "http://tinyurl.com/create.php?url=" + encodeURIComponent(location.href)

Он заменит символы типа & на %26. Эта последовательность символов не рассматривается как разделитель переменных, поэтому она будет присоединена как значение переменной.

1 голос
/ 22 августа 2010

Попробуйте

javascript:void(location.href='http://mywebsite.com/create.php?url='+encodeURIComponent(location.href));
0 голосов
/ 26 марта 2013

Для передачи URL-адреса в параметре $ _GET, например:

http://yoursite.com/page.php?myurl=http://google.com/bla.php?sdsd=123&dsada=4323

тогда вам нужно использовать функцию кодирования:

echo 'http://yoursite.com/page.php?url='.urlencode($mylink);

//so, your output (url parameter) will get like this
//http://yoursite.com/page.php?url=http%3A%2F%2Fgoogle.com%2Flink.php%3Fname%3Dsta%26car%3Dsaab

после этого вам нужно декодировать параметр с помощью:

$variab = $_GET['url'];
$variab = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($variab)); 
$variab = html_entity_decode($variab,null,'UTF-8');
echo $variab;

таким образом, вы можете передать правильную ссылку в качестве параметра.

0 голосов
/ 22 августа 2010

так что вы хотите, просто URL без строки запроса?

$url = explode('?',$_GET['url']);
$url = $url[0];
0 голосов
/ 22 августа 2010
javascript:void(location.href='http://mywebsite.com/create.php?url='+encodeURIComponent(location.href))

Вам необходимо экранировать символы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...