Как закодировать или отфильтровать _GET и получить лишний% 20

У меня есть скрипт php, который ловит ответ от сервера

Вот как я ловлю переменные

$id = $_GET["variable1"];
$name = $_GET["variable2"];
$type = $_GET["variable3"];

Я получаю эту строку с сервера

http://www.example.com/myscript.php?variable1=667,%20&variable2=john,%20&variable3=shoes

Как я собираюсь взять правильные переменные здесь? Я не хочу «,% 20». В этом примере правильно должно быть что-то вроде этого.

http://example.com/myscript.php?variable1=667&variable2=john&variable3=shoes

$id = 667
$name = john
$type = shoes

Моя проблема в том, что я не могу контролировать то, что сервер посылает мне в своей строке, поэтому мне нужно отфильтровать% 20 ​​или есть какой-то другой способ, чтобы я мог получить их в мои переменные.

0

Решение

%20 это пространство. Вы можете просто urldecode() Получить параметры и удалить трейлинг ,%20s, или просто прочитайте и измените предопределенный PHP $_GET массив, который по умолчанию urldecoded.

// Let's just make a copy of $_GET
$params = $_GET;
// Now let's walk over the array.
foreach ($params as $key => $val) {
// We need to get rid of the last two characters from $val
// (comma, space). So we just overwrite the value of $val
// with 2 characters cut off from the string.
$params[$key] = substr($val, 0, strlen($val) - 2);
}
0

Другие решения

Используйте функцию urldecode. Это удалит эти специальные символы из вашего URL.

$new_url = urldecode("http://www.example.com/myscript.php?variable1=667,%20&variable2=john,%20&variable3=shoes");

Вы также можете разделить ваши параметры,

foreach (explode('&', "http://www.example.com/myscript.php?variable1=667,%20&variable2=john,%20&variable3=shoes") as $chunk) {
$param = explode("=", $chunk);
if ($param) {
printf("Value for parameter \"%s\" is \"%s\"<br/>\n", urldecode($param[0]), urldecode($param[1]));
}
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector