如何在 php.ini 中动态接收带点的参数。
假设我知道有一个 URL 参数"hl"
,但是在参数名称中附加了一些动态值,例如
"h1.u", "hl.p"
这些参数是否可以使用动态名称?
如何在 php.ini 中动态接收带点的参数。
假设我知道有一个 URL 参数"hl"
,但是在参数名称中附加了一些动态值,例如
"h1.u", "hl.p"
这些参数是否可以使用动态名称?
看来这是已知的行为,并且有一些解决方法(创建一个函数来获取实际的 $_GET 参数)。
查看这个问题了解更多详情:Get PHP to stop replace '.' $_GET 或 $_POST 数组中的字符?
$_GET
是一个枚举数组。
这意味着,您可以遍历整个$_GET
数组并检查“变体”。
意味着参数 h1.u 将位于$_GET['h1.u'];
搜索可以像这样工作:
foreach($_GET as $key => $value) {
if(strpos($key, "h1") !== false) {
//Do stuff
}
}
该代码将遍历整个数组,并在其键中的某处查找包含“h1”的任何内容并对其进行处理。
strpos
boolean false
如果未找到将返回,这就是为什么您需要进行类型检查而不是检查的not 0
原因,因为 h1 很可能位于位置 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
}
未经测试,可能存在小错误。如果你找到了,我会纠正它。
据我所知,点字符在 GET 变量中是不允许的。GET 将它们替换为“_”。如果您的变量自然不会有任何下划线,这很好:在 PHP 脚本的开头,您只需查找 'h1_' 加上整个可能字母的任何动态组合(或者,调整 Ronnie 的答案以使用 '_ ' 代替 '。')。
我遇到了 _ 是 GET 变量名中的有效字符的情况,但我需要一种方法来指定 '.' 也。所以我使用 Javascript 来确保所有的 '.' 预先变成'__'(两个下划线),然后我在接收PHP中寻找这种模式。