2011-11-16 5 views
0

多次元配列と文字列ノードをフィルタ処理するにはどうすればよいですか?私はPOSTを介してアプリケーションに入ってくるデータを簡単に消毒して、これが本当に便利だと思います。n-deep配列をフィルタリングして文字列ノードをフィルタリングする方法 - PHP

+0

[アレイ内のアレイとのForeach]の(http://stackoverflow.com/questions/5593687/exclude-items-in-iterator)イテレータの項目を除外] – Gordon

+0

可能重複の可能性のある重複(http://stackoverflow.com/questions/5524227/php-foreach-with-arrays-within-arrays/5524267#5524267) – Gordon

+0

代替http://php.net/manual/en/function.filter-input-array FILTER_CALLBACKを使用した.php – Gordon

答えて

5

を使用する必要があります。例えば:

function doFilter($arr) { 
    foreach ($arr as $key => $value) { 
     if (is_string($value)) { 
      $arr[$Key] = sanitize($value); 
     } else if (is_array($value)) { 
      $arr[$key] = doFilter($value); 
     } 
    } 
    return $arr; 
} 

function sanitize($str) { 
    // Perform necessary steps to sanitize $str 
    return $str; 
} 
0

あなたは、配列を横断し、その文字列の要素をフィルタリングするために再帰関数を使用することができますRecursion

function sanitizePost($post) { 
     if (is_array($post)){ 
      foreach ($post as $k => $p) { 
       $post[$k] = sanitizePost($p); 
      } 
     } else { 
      $post = sanatizeStringFunction($post); // may be use regex or something 
     } 

     return $post; 
    } 
関連する問題