PHP-清理数组的值

问题描述 投票:18回答:5

我有一个数组,它来自$_POST[],并且可以在其中包含其他数组作为值,例如:

array(
 'title' => 'Title',
 'data' => array(
             'hdr' => 'Header'
             'bdy' => 'Body'
           ),
  'foo' => array(1, 23, 65),
  ...
)

我如何清理这个大数组的所有值?例如将strip_tags()应用于<>,标题正文12365等值]我有一个数组,它来自$ _POST [],并且可以在其中包含其他数组作为值,例如:array('title'=>'Title','data'=> array('hdr'=>'标头''bdy'=&...

php arrays multidimensional-array sanitization
5个回答
9
投票
看看array_map

<?php $a = array( 'title' => 'Title', 'data' => array( 'hdr' => 'Header', 'bdy' => 'Body' ), 'foo' => array(1, 23, 65) ); $b = array_map("strip_tags", $a); print_r($b); ?>


56
投票
只需使用filter extension

/* prevent XSS. */ $_GET = filter_input_array(INPUT_GET, FILTER_SANITIZE_STRING); $_POST = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRING);


3
投票
function strip($string, $allowed_tags = NULL) { if (is_array($string)) { foreach ($string as $k => $v) { $string[$k] = strip($v, $allowed_tags); } return $string; } return strip_tags($string, $allowed_tags); }
仅是递归函数的示例,在这种情况下用于剥离标签。

0
投票
这看起来不错,但是请对其进行改进或有任何疑虑,请发表评论:

$_GET =filter_var_array($_GET); $_POST=filter_var_array($_POST);


-1
投票
假设我们要清理$ _POST数组:

foreach($_POST as $k=>$v) {$_POST[$k] = htmlspecialchars($v);}

© www.soinside.com 2019 - 2024. All rights reserved.