Yaslaw.Info > PHP > [PHP] filterInputDefaults
Impressum Stopp Acta

[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;
}    
?>


Kategories: [PHP] | [Functions]
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by WikkaWiki