如何在php中用点动态接收参数。
我知道有一个URL参数"hl"
,但是参数名称中附加了一些动态值,如
"h1.u", "hl.p"
这些参数可以用动态名称吗?
答案 0 :(得分:2)
看来这是已知的行为,并且有一些解决方法(创建一个函数来获取实际的$ _GET参数)。
查看此问题以获取更多详细信息:Get PHP to stop replacing '.' characters in $_GET or $_POST arrays?
答案 1 :(得分:0)
$_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号位置(第一个)字符)
答案 2 :(得分: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
}
未经测试,可能存在小错误..如果您找到错误,我会更正。
答案 3 :(得分:0)
据我所知,GET变量中不允许使用点字符。 GET用'_'替换它们。如果您的变量自然不会有任何下划线,这很好:在PHP脚本的开头,您只需查找'h1_'的任何动态组合加上整个可能的字母组(或者,调整Ronnie的答案以使用'_ ' 代替 '。')。
我遇到的情况是_是GET变量名中的有效字符,但我需要一种指定'。'的方法。太。所以我使用Javascript来确保所有'。'事先变成'__'(两个下划线),然后我在接收PHP中寻找这个模式。