Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何对%20进行编码或筛选\u获取并删除%20_Php_Html - Fatal编程技术网

Php 如何对%20进行编码或筛选\u获取并删除%20

Php 如何对%20进行编码或筛选\u获取并删除%20,php,html,Php,Html,我有一个php脚本,可以捕获来自服务器的post响应 这就是我捕捉变量的方式 $id = $_GET["variable1"]; $name = $_GET["variable2"]; $type = $_GET["variable3"]; 我从服务器上得到这条线路 http://www.example.com/myscript.php?variable1=667,%20&variable2=john,%20&variable3=shoes 我怎么才能在这里找到合适的车?我不

我有一个php脚本,可以捕获来自服务器的post响应

这就是我捕捉变量的方式

$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,或者是否有其他方法可以将它们放入我的VAR中。

使用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]));
   }
}
%20是一个空格。您可以只对GET参数进行urldecode并删除尾部%20s,或者只读取并更改PHP预定义的$\u GET数组,该数组默认为urldecode

// 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);
}

手册中有一个函数专门用于此目的,因此第一个问题是,您是如何将此请求以您不期望的格式发送到服务器的?你为什么不能解决这个问题。如您所说,如果您对此无法控制,则根据此行为是否可预测,您有许多选项,即每个参数是否总是发生这种情况。添加到Dagon:.Notes¨警告superglobals$\u GET和$\u REQUEST已解码。对$\u GET或$\u请求中的元素使用urldecode可能会产生意外和危险的结果@DOCASAREL啊,对不起,我忘了。那么urldecode就没有必要了。另外,我很好奇为什么在已经解码的$\u GET映射上使用urldecode会很危险。有什么想法吗?