Поэтому у меня есть следующий PHP-код:
echo $_GET["r"];
Что действительно просто..
Но когда я запрашиваю PHP файл следующим образом: ....php?r=123+123
, он выплевывает "123 123", а не "123 + 123" со знаком "плюс". Почему это происходит и как я могу это исправить?
Я пытался:
echo urlencode($_GET["r"]);
Что работает, НО, это был действительно простой пример, если бы я должен был установить это переменной:
$r = urlencode($_GET["r"]);
Переменная $r
будет установлена равной 123%2B123
а не 123+123
, я хочу, чтобы переменная $r
была установлена с помощью знака real plus, а не% 2B?
Правильно, что URL php? R = 123 + 123 декодируется как "123 123", разделенные пробелами, а не как знаки плюс. Чтобы он был правильно декодирован, сделайте его закодированным как php? R = 123% 2B123. Даже если вы написали, что не желаете этого, рассмотрите это правильное поведение.
Символы пробела кодируются как "+" в парах ключ-значение application/x-www-form-urlencoded.
RFC-1866 (спецификация HTML 2.0), пункт 8.2.1. в подпункте 1 говорится: "Имена полей и значения полей формы экранированы: символы пробела заменены на" + ", а затем зарезервированные символы экранируются").
Ниже приведен пример такой строки в URL-адресе, где RFC-1866 позволяет использовать пробелы в виде плюсов: " http://example.com/over/there?name=foo+bar ". Итак, после "?" Пробелы заменяются на плюсы. Этот способ кодирования данных формы также приведен в более поздних спецификациях HTML, например, искать соответствующие абзацы о приложении /x-www-form-urlencoded в спецификации HTML 4.01 и т.д.
Как о urlencode и rawurlencode, пожалуйста, найдите дополнительную информацию по адресу urlencode vs rawurlencode?
Итак, я нашел его, вместо urlencode, я просто использовал RAWurlencode!
Знак "Плюс" является символом reseverd в URL-адресах. Когда вы используете его напрямую, вызывая скрипт php, это приведет к пробелу.
Когда вам нужно отправить знак "плюс", в комментариях уже нет способа кодирования URL-адреса, как это предлагается в комментариях.