使用filter_input
时,我无法提取POST
数组变量。 POST
输入:
type => 'container',
action => 'edit',
data[display] => 1,
data[query_limit] => 100
我可以正确地从data
超全局访问$_POST
变量作为数组,但filter_input
函数不返回任何内容:
$data = $_POST['data']; // Working, woot
$data = filter_input(INPUT_POST, 'data'); // returns null, should return array
$action = filter_input(INPUT_POST, 'action'); // returns "edit" (correctly)
是否无法将filter_input
用于POST
数组变量?
答案 0 :(得分:112)
尝试:
$data = filter_input(INPUT_POST, 'data', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY);
链接:
答案 1 :(得分:10)
FILTER_REQUIRE_ARRAY
变量包含标量值, POST
将返回false。如果您不确定或只是打算接受标量和数组值的POST
变量,请改用FILTER_FORCE_ARRAY
,这会将任何输入视为数组,从而基本上相应地投射标量值。
$data = filter_input(INPUT_POST, 'data', FILTER_DEFAULT, FILTER_FORCE_ARRAY);
答案 2 :(得分:1)
我在javascript中使用了FormData,并使用jquery ajax发布了字段。 我收到所有这些领域的方式是:
$arrFields = array('field1','field2','field2','field3', 'field4','field5');
foreach($arrFields as $field){
$params[$field] = filter_input(INPUT_POST, $field, FILTER_DEFAULT);
}
var_dump($params);
然后我将把所有数据都放到一个我可以传递的数组中......
答案 3 :(得分:0)
或者,您也可以一次过滤...例如
import datetime
s_dt = 'Mon Jul 01 17:17:37 UTC'
datetime.datetime.strptime(s_dt, '%a %b %d %H:%M:%S %Z')
# datetime.datetime(1900, 7, 1, 17, 17, 37)
s_dt = 'Mon Jul 01 17:17:37 GST'
datetime.datetime.strptime(s_dt, '%a %b %d %H:%M:%S %Z')
# ValueError: time data 'Mon Jul 01 17:17:37 GST' does not match format '%a %b %d %H:%M:%S %Z'
就返回结果而言,结果几乎与发布数据相同,除了在这种情况下,不是全局变量$ _POST而是$ MY_INPUT。