You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Laravel Request中仅获取含特定字符串的输入?

在Laravel中快速筛选含特定前缀的请求输入字段

嘿,这个需求根本不用手写foreach循环,Laravel的集合工具已经提供了超优雅的解决方式,给你两种最便捷的实现方案:

方法一:用集合的whereStartsWith()直接匹配前缀

这是最省心的方式,把请求的所有输入转成集合后,直接用whereStartsWith()筛选键名以custom_开头的字段:

public function CreateSave(Request $request){
    $customFields = collect($request->all())->whereStartsWith('custom_')->all();
    return $customFields;
}

这个方法会自动帮你遍历所有输入的键,精准筛选出符合前缀要求的键值对,最后用all()转成数组返回,完全符合你的预期结果。

方法二:用filter()自定义筛选逻辑

如果之后你需要更灵活的匹配规则(比如键名包含custom_但不一定在开头),可以用filter()结合闭包来实现:

public function CreateSave(Request $request){
    $customFields = collect($request->all())->filter(function ($value, $key) {
        return str_contains($key, 'custom_');
    })->all();
    return $customFields;
}

这里用Laravel自带的str_contains()辅助函数判断键名是否包含目标字符串,适配更多复杂场景。

额外小技巧:反向筛选(不推荐,但可以了解)

如果你不想用集合,也可以通过反向排除非目标字段来实现,不过这种写法不如集合方式直观:

public function CreateSave(Request $request){
    // 先拿到所有非custom_开头的键名
    $nonCustomKeys = array_filter(array_keys($request->all()), function ($key) {
        return !str_starts_with($key, 'custom_');
    });
    // 排除这些键,剩下的就是目标字段
    $customFields = $request->except($nonCustomKeys);
    return $customFields;
}

总的来说,第一种whereStartsWith()的方案最简洁易读,是首选哦!

内容的提问来源于stack exchange,提问作者joenpc npcsolution

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:15:45