2017-01-31 5 views
0

Я хочу, чтобы отправить данные через $_GET и данные выглядят как этот 7U0e1rK6SmjOJuLyAMc5ZL+EsuGqKo2SRSTq3cQlI20=

и переменная $_GET является voucher_code

Когда я попытался повторить $_GET['voucher_code'], я всегда в конечном итоге с

7U0e1rK6SmjOJuLyAMc5ZL EsuGqKo2SRSTq3cQlI20= * Обратите внимание на "+" заменяется на "пространство"

Как остановить $_GET сделать это? заменить мой «+» с «пространством»

Любой ответ оценен

+1

Пространство добавляется только в том случае, если вы выполняете urldecode() в строке перед эхом. Вам не нужно декодировать входы $ _GET. Они уже должны быть декодированы. – Brogan

ответ

1

Для того, чтобы сохранить данные, которые вы отправляете, вы должны urlencode это первая:

Возвращает строку, в которой все не- буквенно-цифровые символы, кроме -_. были заменены знаком процента (%), за которым следуют две шестнадцатеричные цифры и пробелы, закодированные как знаки плюс (+). Он кодируется так же, как и закодированные опубликованные данные из WWW-формы, то же самое, что и в типе носителя application/x-www-form-urlencoded. Это отличается от «RFC 3986» (см. Rawurlencode()) в том, что по историческим причинам пробелы кодируются как знаки плюс (+).

Затем, когда вы получаете данные, вы должны urldecode ему:

var_dump(urlencode('7U0e1rK6SmjOJuLyAMc5ZL+EsuGqKo2SRSTq3cQlI20=')); 
// result is 7U0e1rK6SmjOJuLyAMc5ZL%2BEsuGqKo2SRSTq3cQlI20%3D 
var_dump(urldecode('7U0e1rK6SmjOJuLyAMc5ZL%2BEsuGqKo2SRSTq3cQlI20%3D')); 
// result is 7U0e1rK6SmjOJuLyAMc5ZL+EsuGqKo2SRSTq3cQlI20= 

Обратите внимание, что при получении данных с $_GET, it already passes urldecode.