PHP: проблема foreach и массива - PullRequest
0 голосов
/ 06 октября 2010

У меня есть это:

foreach($_POST as $key => $value) {
    $data[$key] = filter($value);
}

filter(); полоски, если есть какие-либо метки, и реальный выход из них.

Теперь у меня также есть массив в форме POST, поэтому я получаю ошибки в strip_tags() и mysql_real_escape_string. Как я должен позволить только $_POST["Searching"] не фильтроваться по filter();?

Ответы [ 4 ]

3 голосов
/ 06 октября 2010

Вы можете использовать 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 голос
/ 06 октября 2010

Во-первых, вы можете использовать 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 );
0 голосов
/ 06 октября 2010
<?php
foreach($_POST as $key => $value){
    if(!is_array($_POST[$key])){
        $data[$key] = filter($value);
    }else{
        $data[$key] = $value;
    }
}
?>
0 голосов
/ 06 октября 2010

Использование is_array () :

foreach($_POST as $key => $value) {
    if (!is_array($value))
       $data[$key] = filter($value);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...