| Yaslaw.Info > PHP > [PHP] filterInputDefaults |
Impressum ∞ |
[PHP] filterInputDefaults
filterInputsDefaults.php
<?php
/**
* mpl by ERB software
* @author stefan.erb(at)erb-software.com
*/
/**
* filterInputDefaults
* erweitert filter_input_array um 'default'
* Siehe dazu auch die Doku zu filter_input_array
* http://ch2.php.net/manual/de/function.filter-input-array.php
* @param int $type Einer von INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV, INPUT_SESSION oder INPUT_REQUEST
* @param array $args
* @return array
* @example
* // $_GET -> Array([file] = 'test.png', [size] = 100, [test] = 'ungültiger Eintrag')
* // eine Definition für filter_input_array() erweitert um die Einträge 'default'
* $definition = array(
* 'file' => FILTER_SANITIZE_STRING,
* 'size' => array(
* 'filter' => FILTER_VALIDATE_INT,
* 'options' => array('min_range' => 30, 'max_range' => 200),
* 'default' => 80),
* 'type' => array(
* 'filter' => FILTER_VALIDATE_REGEXP,
* 'options' => array('regexp' => '/^(?:fit|stretch|cut)$/'),
* 'default' => fit));
* $get = filterInputDefaults(INPUT_GET, $definition);
* // $get -> Array([file] = 'test.png', [size] = 100, [type] = 'fit')
*/
function filterInputDefaults($type, $definition ){
// filter_input_array normal ausführen
$myInputs = filter_input_array($type, $definition);
// Falls keine Parameter übrig bleiben, die Inputs als leeren Array definieren
if(!is_array($myInputs)) $myInputs = array();
// Die fehlenden Parameters ermitteln
$diff = array_diff_key($definition, $myInputs);
// Ein Array mit den fehlenden Paramters erstellen, values = NULL
$diff = array_fill_keys(array_keys($diff), NULL);
$myInputs = array_merge($myInputs, $diff);
//Für jeden Eintrag prüfen: falls kein Wert vorhanden ist und ein 'default' definiert ist, diesen nehmen
array_walk($myInputs, create_function('&$item, $key, $args', '$item = (is_null($item) && is_array($arg=$args[$key])) ? $arg["default"] : $item;'), $definition);
return $myInputs;
}
?>
/**
* mpl by ERB software
* @author stefan.erb(at)erb-software.com
*/
/**
* filterInputDefaults
* erweitert filter_input_array um 'default'
* Siehe dazu auch die Doku zu filter_input_array
* http://ch2.php.net/manual/de/function.filter-input-array.php
* @param int $type Einer von INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, INPUT_ENV, INPUT_SESSION oder INPUT_REQUEST
* @param array $args
* @return array
* @example
* // $_GET -> Array([file] = 'test.png', [size] = 100, [test] = 'ungültiger Eintrag')
* // eine Definition für filter_input_array() erweitert um die Einträge 'default'
* $definition = array(
* 'file' => FILTER_SANITIZE_STRING,
* 'size' => array(
* 'filter' => FILTER_VALIDATE_INT,
* 'options' => array('min_range' => 30, 'max_range' => 200),
* 'default' => 80),
* 'type' => array(
* 'filter' => FILTER_VALIDATE_REGEXP,
* 'options' => array('regexp' => '/^(?:fit|stretch|cut)$/'),
* 'default' => fit));
* $get = filterInputDefaults(INPUT_GET, $definition);
* // $get -> Array([file] = 'test.png', [size] = 100, [type] = 'fit')
*/
function filterInputDefaults($type, $definition ){
// filter_input_array normal ausführen
$myInputs = filter_input_array($type, $definition);
// Falls keine Parameter übrig bleiben, die Inputs als leeren Array definieren
if(!is_array($myInputs)) $myInputs = array();
// Die fehlenden Parameters ermitteln
$diff = array_diff_key($definition, $myInputs);
// Ein Array mit den fehlenden Paramters erstellen, values = NULL
$diff = array_fill_keys(array_keys($diff), NULL);
$myInputs = array_merge($myInputs, $diff);
//Für jeden Eintrag prüfen: falls kein Wert vorhanden ist und ein 'default' definiert ist, diesen nehmen
array_walk($myInputs, create_function('&$item, $key, $args', '$item = (is_null($item) && is_array($arg=$args[$key])) ? $arg["default"] : $item;'), $definition);
return $myInputs;
}
?>
Kategories: [PHP] | [Functions]
