Передача & в переменной URL с помощью urlencode - PullRequest
0 голосов
/ 17 марта 2010

Я сделал urlencode из переменной, прежде чем перейти к URL

http://example.com/Restaurants?alias=F%26B

Но когда я пытаюсь напечатать как на странице

 $alias =  rawurldecode($_GET['alias']);
 echo $alias;

печатает только F. Как это решить?

Ответы [ 5 ]

3 голосов
/ 17 марта 2010

Я сомневаюсь, что $_GET['alias'] существует при запросе URL с запросом aliasF%26B. Это скорее $_GET['aliasF&B'], что становится заселенным.

В этом случае вам нужно использовать $_SERVER['QUERY_STRING'], чтобы получить полный запрос.

1 голос
/ 17 марта 2010

AFAIK $_GET уже декодированы.

См. php.net

Суперглобальные $ _GET и $ _REQUEST уже расшифрованы. Использование urldecode () для элемента в $ _GET или $ _REQUEST мог быть неожиданным и опасным Результаты.

1 голос
/ 17 марта 2010

Вам не нужно урлен кодировать пару. Вам нужно только ввести имя и значение urlencode как таковое:

Неправильно:

urlencode('aliasF=B')

Правильно:

urlencode('aliasF') . '=' . urlencode('B')
1 голос
/ 17 марта 2010

Похоже, вы не используете строку запроса "правильно". Это должно быть в key=value парах. Я бы посмотрел на использование $_SERVER['QUERY_STRING'] для получения вашей информации.

0 голосов
/ 19 сентября 2013

Эту проблему можно решить с помощью другой системы кодирования, специфичной для вашей ситуации:

function encode($string)
{
  $result = str_replace("|","||",$string);
  return str_replace("&","|20",$result);
}

function decode($string)
{
  $result = str_replace("|20","&",$string);
  return str_replace("||","|",$result);
}

Это в основном создаст отдельную экранирующую систему, используя '|' персонаж. Этот символ может быть чем угодно, что вы обычно не используете и не является разделителем полей.

Здесь Apache не будет преобразовывать URL-адрес в нечто иное, что приведет к аннулированию конверсии. Также браузеры не преобразуют его.

Имейте в виду, что вы бы decode($_GET['alias']) и encode() указали URL-адрес, который нажимает пользователь, или сценарий.

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