首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >urldecode损失1参数

urldecode损失1参数
EN

Stack Overflow用户
提问于 2013-04-29 16:52:38
回答 5查看 108关注 0票数 0

我使用urlencode & urldecode通过html表单传递变量。

代码语言:javascript
复制
$info = 'tempId='.$rows['tempID'].'&tempType='.$rows['tempType'].'&dbId='.$rows['ID'];
echo '<input type="hidden" name="rank[]" value="'.urlencode($info).'" >';

下面是$rows中的内容

代码语言:javascript
复制
array (size=4)
  'ID' => string '110' (length=3)
  'tempID' => string '1' (length=1)
  'tempType' => string 'temp_first' (length=10)
  'pageOrder' => string '0' (length=1)

所以$info是

代码语言:javascript
复制
tempId=1&tempType=temp_first&dbId=110

但是如果我解码它,它会丢失一个参数。这怎麽可能?

代码语言:javascript
复制
foreach (explode('&', urldecode($list[$i])) as $chunk) {
    $param = explode("=", $chunk);

    $tempId = urldecode($param[0]); // template id
    $tempType = urldecode($param[1]); // Template type
    $dbId = urldecode($param[2]); // database ID

    var_dump($param);

}

输出:

代码语言:javascript
复制
array (size=2)
  0 => string 'dbId' (length=4)
  1 => string '110' (length=3)

有时,数组中甚至有一些不应该在其中的内容,例如,它显示tempType而不是temp_first。只有变量名。

我希望你们能帮助我

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-29 17:09:46

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

代码语言:javascript
复制
parse_str(urldecode($list[$i]), $output);
var_dump($output);

将输出:

代码语言:javascript
复制
array
  'tempId' => string '1' (length=1)
  'tempType' => string 'temp_first' (length=10)
  'dbId' => string '110' (length=3)
票数 3
EN

Stack Overflow用户

发布于 2013-04-29 17:06:05

尝尝这个

代码语言:javascript
复制
  $result=array();
  foreach (explode('&', urldecode($list[$i])) as $chunk) {
     $param = explode("=", $chunk);
     $result[$param[0]]=$param[1];
  } 
  var_dump($result);
票数 2
EN

Stack Overflow用户

发布于 2013-04-29 17:07:16

你能试试这个并检查结果吗(虽然我在黑暗中摸索):

代码语言:javascript
复制
//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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16274652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档