У меня есть скрипт 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 или есть какой-то другой способ, чтобы я мог получить их в мои переменные.
%20
это пространство. Вы можете просто urldecode()
Получить параметры и удалить трейлинг ,%20
s, или просто прочитайте и измените предопределенный 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);
}
Используйте функцию 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]));
}
}