Intereting Posts

URL-адрес в качестве параметров URL-адреса – проблема с «&»

Существует сценарий, который получает другой url как параметр GET:

script.php?file=http://www.google.com&id=123 

Проблема в:
когда url имеет сам параметр, он используется как параметр скрипта, а не параметр url:

 script.php?file=http://www.google.com?q=adsf&lang=en&id=123 

URL-адрес: http://www.google.com?q=adsf&lang=en , но он прерывается после & , потому что он рассматривается как связанный с script.php .

Что я могу сделать по этому поводу?
Я устал заменять & с %26 , но url сломался.

Solutions Collecting From Web of "URL-адрес в качестве параметров URL-адреса – проблема с «&»"

Вам нужно закодировать значение с помощью процентного кодирования .

Если вы используете PHP, используйте rawurlencode (или urlencode если ожидается приложение / x-www-form-urlencoded ):

 $url = 'http://www.google.com?q=adsf&lang=en'; echo 'script.php?file='.rawurlencode($url); 

Вам нужно, чтобы URL-адрес кодировал весь URL-адрес, который вы передаете в качестве параметра, другому URL-адресу (ваш скрипт). % 26 – правильная кодировка для &. Просто убедитесь, что вы его декодируете на сервере, прежде чем использовать его. Вы не говорите, какой язык (ы) вы используете, но большинство, в том числе javascript и php, имеют собственные функции кодирования URL-адресов.

Попробуйте кодировать каждый специальный символ следующим образом:

 script.php?file=http%3a%2f%2fwww.google.com%3fq%3dadsf%26lang%3den&id=123 

хотя было бы лучше и проще использовать rawurlencode() .

Кроме того, прочитайте это о кодировке URL.