2012年3月23日 星期五

php htmlspecialchars 遞迴處理

//有一個需求,陣列裡面所有參數都要被一個函式處理過。
//此例是 htmlspecialchars
  $tmpary['a']['a1'] = 'a1v';
  $tmpary['a']['a2'] = 'a2v';
  $tmpary['b'] =  'bv';
  $tmpary = init_htmlargvfilter($tmpary);  //把外來參數,做個過濾。
  init_pre_printr($tmpary);
//fn zone-------------------------------------------------------
function init_htmlargvfilter(&$tmpary) {
  if (is_array($tmpary)) {
    foreach ($tmpary as $k => $v) {
      if (is_array($v)) {
        //於此作遞迴動作
        $tmpary[$k] = init_htmlargvfilter($v);
      } else {
        $tmpary[$k] = htmlspecialchars($v);
      }
    }
  }
  return $tmpary;
}
exit;
//後來寫了一個函式,可以遞迴這樣子處理很多東西
$_REQUEST['a']['a1'] = 'a1v';
$_REQUEST['a']['a2'] = 'a2v';
$_REQUEST['b'] =  'bv';

$_REQUEST = init_array_scan($_REQUEST, 'htmlspecialchars');  //把外來參數,做個過濾。
init_pre_printr($_REQUEST);
//fn zone-------------------------------------------------------
function init_array_scan($tmpary, $user_func) {
  if (is_array($tmpary)) {
    foreach ($tmpary as $k => $v) {
      if (is_array($v)) {
        $tmpary[$k] = init_array_scan($v, $user_func);
      } else {
        $tmpary[$k] = call_user_func($user_func, $v);
      }
    }
  }
  return $tmpary;
}
exit;

沒有留言:

張貼留言