我有这个:
foreach($_POST as $key => $value) {
$data[$key] = filter($value);
}
filter();
剥离任何标签,真正逃脱它们。
现在我在POST表单中也有一个数组,所以我在strip_tags()
和mysql_real_escape_string
中收到错误。我应该如何仅$_POST["Searching"]
仅过滤filter();
?
答案 0 :(得分:3)
您可以使用array_walk_recursive
。
array_walk_recursive($_POST,'filter');
并使您的函数filter
通过引用获取值:
function filter(&$value) {
// apply strip_tags and real escape to $value.
$value = mysql_real_escape(strip_tags($value));
}
答案 1 :(得分:1)
首先,您可以使用array_map()
来加快速度,您需要做的就是允许函数识别数组并递归调用自身。
function filter( $inVar ){
if( is_array( $inVar ) )
return array_map( 'filter' , $inVar );
return mysql_real_escape( strip_tags( $inVar ) );
}
然后这样称呼它:
$data = array_map( 'filter' , $_POST );
答案 2 :(得分:0)
使用is_array():
foreach($_POST as $key => $value) {
if (!is_array($value))
$data[$key] = filter($value);
}
答案 3 :(得分:0)
<?php
foreach($_POST as $key => $value){
if(!is_array($_POST[$key])){
$data[$key] = filter($value);
}else{
$data[$key] = $value;
}
}
?>