PHP读取含点的GET参数变量名失败问题求助
解决表单name含点号时PHP无法读取GET参数的问题
PHP在解析GET/POST请求参数时,会自动将参数名中的点号(.)替换为下划线(_)。你代码里尝试通过$_GET['input_18.1']读取值,但实际$_GET数组中对应的键是input_18_1,因此直接用点号作为键名会读取不到数据,导致页面无输出。
解决方案一:修改表单name属性(推荐)
把表单输入框name里的点号换成下划线或其他无冲突的字符,直接通过转换后的键名读取参数:
<?php if (isset($_GET['submit'])) { $show = $_GET['input_18_1'] . " " . $_GET['input_18_2']; echo $show; } ?> <form method="get"> <input name="input_18_1"> <input name="input_18_2"> <input type="submit" name="submit"> </form>
解决方案二:手动解析原始请求参数
如果必须保留name中的点号,可以通过$_SERVER['QUERY_STRING']获取原始的GET参数串,再用parse_str()解析得到保留原始键名的参数数组:
<?php if (isset($_GET['submit'])) { parse_str($_SERVER['QUERY_STRING'], $params); $show = $params['input_18.1'] . " " . $params['input_18.2']; echo $show; } ?> <form method="get"> <input name="input_18.1"> <input name="input_18.2"> <input type="submit" name="submit"> </form>
内容的提问来源于stack exchange,提问作者Mohammad Mahdavi
相关产品推荐
相关产品推荐

