PHP过滤器,如何过滤输入数组
Posted
技术标签:
【中文标题】PHP过滤器,如何过滤输入数组【英文标题】:PHP Filter, how to filter input array 【发布时间】:2011-02-15 04:42:06 【问题描述】:我正在使用 php 过滤器对表单数据进行基本的清理和验证。
我遇到的主要问题是我标记了我的表单,以便所有数据都在一个数组中用于 POST 输入。例如表单字段、页面[名称]、页面[slug]、页面[正文]、页面[状态]等
使用以下内容:
filter_input(INPUT_POST, 'page[name]', FILTER_SANITIZE_STRING);
OR
filter_input(INPUT_POST, "page['name']", FILTER_SANITIZE_STRING);
我无法访问该变量。有人可以告诉我使用 filter_input() 访问数组数据的正确名称
【问题讨论】:
顺便说一句,我在谷歌上疯狂搜索,却一无所获。 你确定变量在清理之前有值吗? @anthony 是的,它确实有一个值,如果我以名称发送它就可以了。只是不确定使用此过滤器方法访问数组键的符号。 当时并不容易,PHP需要让filter_input_array递归……目前这种情况下直接访问$_POST还是容易很多的。 【参考方案1】:怎么样
$_POST['page'] = filter_var_array($_POST['page'], FILTER_SANITIZE_STRING);
【讨论】:
【参考方案2】:我不认为您可以访问单个值(根据需要轻松访问),但是您可以过滤 page
数组并获得所需的值。
$page = filter_input(INPUT_POST, 'page', FILTER_SANITIZE_STRING, FILTER_REQUIRE_ARRAY);
if (array_key_exists('name', $page))
$name = $page['name'];
或者,如果您对失去使用原始输入的能力感到满意,那么您可以使用:
if (isset($_POST['page']['name']))
$name = filter_var($_POST['page']['name'], FILTER_SANITIZE_STRING);
然而,两者都很丑。
【讨论】:
是的,两个都超级丑。我不妨将表单切换为单个 var 名称,并避免该问题。不支持的耻辱。 当然。在您的情况下,使用单个名称(对于过滤器扩展)更方便;不幸的是。 请查看@Fletcher Moore 的回答。非常优雅和有效!以上是关于PHP过滤器,如何过滤输入数组的主要内容,如果未能解决你的问题,请参考以下文章