有没有办法在Laravel 4中仅在Input ::中使用通配符?
例如:
$actInputs = Input::only('act*');
只给我以字符串act
开头的输入。
答案 0 :(得分:1)
这有效:
$actInputs = array();
foreach (Input::all() as $id => $value) {
if (preg_match('/^act(\w+)/i', $id))
$actInputs[$id] = $value;
}
答案 1 :(得分:0)
// 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$/");