urldecode 丢失 1 个参数

问题描述 投票:0回答:5
php urlencode urldecode
5个回答
3
投票

不需要手动分解和处理字符串,可以使用

parse_str()
:

parse_str(urldecode($list[$i]), $output);
var_dump($output);

会输出:

array
  'tempId' => string '1' (length=1)
  'tempType' => string 'temp_first' (length=10)
  'dbId' => string '110' (length=3)

2
投票

试试这个

  $result=array();
  foreach (explode('&', urldecode($list[$i])) as $chunk) {
     $param = explode("=", $chunk);
     $result[$param[0]]=$param[1];
  } 
  var_dump($result);

0
投票

你能尝试一下并检查结果吗(不过我正在黑暗中摸索):

//change this <input type="hidden" name="rank[]" value="'.urlencode($info).'" > to
//<input type="hidden" name="urlargs" value="'.urlencode($info).'" >
$values = explode('&',urldecode($_POST['urlargs']));
$arguments = array();
foreach($values as $argument_set){
    $data = explode('=',$argument_set);
    $arguments[$data[0]] = $data[1];
}
var_dump($arguments);

我相信问题出在你处理价值的方式


0
投票
$data=array();
foreach (explode('&', urldecode($list[$i])) as $chunk) {

    $param = explode("=", $chunk); //
    $data[$param[0]]=$param[1]

}

0
投票

不要将所有代码分组在一起,而是首先将其放入单独的变量中并回显内容以进行调试。因为你说你失去了一个变量,但你显示的输出只是变量之一。另外两个的 var_dump 是什么?

因为你的

var_dump($param);
会输出“=”之前和“=”之后的部分,所以我确实希望输出类似于:那么你缺少哪一个?

array (size=2)
  0 => string 'tempId' (length=6)
  1 => string '1' (length=1)

array (size=2)
  0 => string 'tempType' (length=8)
  1 => string 'temp_first' (length=10)

array (size=2)
  0 => string 'dbId' (length=4)
  1 => string '110' (length=3)

调试代码:

foreach ($list as $row) {
  echo 'Full row:: '. $row.'<br>';

  //if the data is comming via GET or POST, its already decoded and no need to do it again
  $split = explode('&', urldecode($row));

  foreach($split as $chunk) {
    echo 'Chunk:: '.$chunk.'<br>';

    $param = explode('=', $chunk);

    echo 'param name:: '.$param[0].'<br>';
    echo 'param value:: '.$param[1].'<br>';
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.