0

如何在 php.ini 中动态接收带点的参数。

假设我知道有一个 URL 参数"hl",但是在参数名称中附加了一些动态值,例如

"h1.u", "hl.p"这些参数是否可以使用动态名称?

4

4 回答 4

2

看来这是已知的行为,并且有一些解决方法(创建一个函数来获取实际的 $_GET 参数)。

查看这个问题了解更多详情:Get PHP to stop replace '.' $_GET 或 $_POST 数组中的字符?

于 2013-03-18T17:02:16.957 回答
0

$_GET是一个枚举数组。

这意味着,您可以遍历整个$_GET数组并检查“变体”。

意味着参数 h1.u 将位于$_GET['h1.u'];

搜索可以像这样工作:

foreach($_GET as $key => $value) {
    if(strpos($key, "h1") !== false) {
        //Do stuff
    }
}

该代码将遍历整个数组,并在其键中的某处查找包含“h1”的任何内容并对其进行处理。

strposboolean false如果未找到将返回,这就是为什么您需要进行类型检查而不是检查的not 0原因,因为 h1 很可能位于位置 0(第一个字符)

于 2013-03-18T17:01:32.610 回答
0
$gets=array_keys($_GET);
foreach($item in $gets){
  $check1=explode($item, ".");
  if(count($check1) <2){
    //No appended keys recieved
  }

  else{
    $key = $check1[0];
    $apeendedPart= $check1[1];
  }

 //Do something with these two
}

未经测试,可能存在小错误。如果你找到了,我会纠正它。

于 2013-03-18T17:09:34.010 回答
0

据我所知,点字符在 GET 变量中是不允许的。GET 将它们替换为“_”。如果您的变量自然不会有任何下划线,这很好:在 PHP 脚本的开头,您只需查找 'h1_' 加上整个可能字母的任何动态组合(或者,调整 Ronnie 的答案以使用 '_ ' 代替 '。')。

我遇到了 _ 是 GET 变量名中的有效字符的情况,但我需要一种方法来指定 '.' 也。所以我使用 Javascript 来确保所有的 '.' 预先变成'__'(两个下划线),然后我在接收PHP中寻找这种模式。

于 2013-06-08T12:50:27.560 回答