<?php
$f1 = function($key, $value) {
if (preg_match('(_id$)i', $key) !== false) {
$value = (is_array($value)) ? array_map($value, 'intval') : intval($value);
} elseif (is_array($value)) {
foreach ($value as $k => $v) {
$value[$k] = $this->_scrubInput($k, $v);
}
} else {
$ws = NocWorx_Validate::RX_WHITESPACE;
$value = preg_replace("(^{$ws}+|{$ws}+$)", '', $value);
}
return $value;
};
$f2 = function($name, $value) {
$ws = NocWorx_Validate::RX_WHITESPACE;
$body = '$v = preg_replace( \'~^' . $ws . '+|' . $ws . '+$~\', \'\', $v );
if( preg_match( \'/_id$/i\', $k ) ) {
$v = intval( $v );
}
return $v;';
$f = create_function( '$k, &$v', $body );
if( is_array( $value ) ) {
// handle arrays of IDs if they are in a xxx_ids var
if( preg_match( '/_ids$/', $name ) ) {
$value = array_map( 'intval', $value );
} else {
array_walk_recursive( $value, $f );
}
} else {
$value = $f( $name, $value );
}
return $value;
};
$n = ['foo', 'foo_id'];
$v = [
'hai derr',
'1337!',
' hai derr ',
['a_id'=>' 42 tacos', 'b'=>'foo', 'c'=>'blurr']
];
foreach ($n as $name) {
foreach ($v as $value) {
assert($f1($name, $value) === $f2($name, $value));
}
}
preferences:
51.32 ms | 402 KiB | 5 Q