有没有办法在 Laravel 4 中的 Input::only 中使用通配符?
例如:
$actInputs = Input::only('act*');
只给我以 string 开头的输入act
。
有没有办法在 Laravel 4 中的 Input::only 中使用通配符?
例如:
$actInputs = Input::only('act*');
只给我以 string 开头的输入act
。
这有效:
$actInputs = array();
foreach (Input::all() as $id => $value) {
if (preg_match('/^act(\w+)/i', $id))
$actInputs[$id] = $value;
}
// inputStartsWith a string
function inputStartsWith($pattern = null)
{
$input = Input::all(); $result = array();
array_walk($input, function ($v, $k) use ($pattern, &$result) {
if(starts_with($k, $pattern)) {
$result[$k] = $v;
}
});
return $result;
}
像这样使用它:
$inputs = inputStartsWith('act');
更新:(也inputEndsWith
)
// inputEndsWith a string
function inputEndsWith($pattern = null)
{
$input = Input::all(); $result = array();
array_walk($input, function ($v, $k) use ($pattern, &$result) {
if(ends_with($k, $pattern)) {
$result[$k] = $v;
}
});
return $result;
}
像这样使用它:
$inputs = inputEndsWith('_name');
可以将这些用作函数helper
或类并添加这些函数。extend
core
更新:(模式匹配)
function InputMatching($pattern) {
$input = Input::all();
return array_intersect_key(
$input,
array_flip(preg_grep($pattern, array_keys($input), 0))
);
}
像这样使用它:
// will match 'first_name1' and 'first_name2' (ends with digit)
$inputs = InputMatching("/^.*\d$/");