Php 为什么$\u会话包含未修剪的$\u帖子?

Php 为什么$\u会话包含未修剪的$\u帖子?,php,session,post,multidimensional-array,trim,Php,Session,Post,Multidimensional Array,Trim,为什么这样不行 session_start(); print("<pre>".print_r($_POST['foo'],true)."</pre>"); // 'Bob ' array_walk_recursive($_POST, function (&$val) { $val = trim($val); }); print("<pre>".print_r($_POST['foo'],true)."</pre>"); //

为什么这样不行

session_start();

print("<pre>".print_r($_POST['foo'],true)."</pre>");  // 'Bob     '

array_walk_recursive($_POST, function (&$val) { $val = trim($val); });
print("<pre>".print_r($_POST['foo'],true)."</pre>");  // 'Bob'

$_SESSION['foo'] = filter_input(INPUT_POST, 'foo', FILTER_SANITIZE_STRING);
print("<pre>".print_r($_SESSION['foo'],true)."</pre>");  // 'Bob     '
session_start();
print(“.print_r($_POST['foo'],true)。”;//鲍勃的
数组_walk_recursive($_POST,function(&$val){$val=trim($val);});
print(“.print_r($_POST['foo'],true)。”;//鲍勃的
$\u会话['foo']=过滤器输入(输入\u POST,'foo',过滤器\u清理\u字符串);
打印(“.print_r($_SESSION['foo'],true)。”);//鲍勃的
来自:

请注意,此函数实际上并没有(或至少似乎没有)根据当前的$u GET等值进行过滤。相反,它似乎是根据原始值进行过滤

编辑

在这里,您可以将调用添加到
trim()


FILTER\u SANITIZE\u STRING
不修剪空白字符:
去除标记,可以选择去除或编码特殊字符。
以及为什么从
$\u POST
切换到
INPUT\u POST
?这种不一致性带来了问题。我怀疑
filter\u input()。也就是说,更改
$\u POST
的内容不会对
筛选输入()的行为产生任何影响
@johncode是的,但是我在通过
筛选输入()
之前已经修剪了$\u POST。因此我不应该修剪
$\u POST
,而应该修剪
$\u会话
?只需将它环绕在对
筛选输入()的调用中即可()
。请参阅我的更新答案。我有很多变量。在所有清理之后,执行
数组\u walk\u递归($\u会话,函数(&$val){$val=trim($val);});
是否有问题?
$_SESSION['foo'] = trim(filter_input(INPUT_POST, 'foo', FILTER_SANITIZE_STRING));