通过删除Laravel中的额外字符,从斜杠分隔的URL中提取参数值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过删除Laravel中的额外字符,从斜杠分隔的URL中提取参数值相关的知识,希望对你有一定的参考价值。

我在laravel框架上为我的php服务器创建路由。如何通过剥离不必要的位从斜杠分隔的URL中提取正确的参数值?

当url模式以Route::get('user/{event_id}',function ($event_id){return view('rsvp',['event_id'=>$event_id]);})->where(['event_id'=>'[0-9]+']);的形式设置时

它正如预期的那样工作。但是,我想以'user/event-description-here5_now-<event_id>的形式解析一个url并实现相同的功能。也就是说,我想在我的php文件中使用event_id并忽略event-description-here5_now位。我该怎么办呢?

答案

这是不可能的,因为laravel路径模型绑定通过通配符工作,并且当尝试从url段提取数字时它不起作用。

为了使其工作,您将必须自定义laravel路径解析逻辑:https://laravel.com/docs/5.8/routing#route-model-binding

类似的东西:

public function boot()
{
    parent::boot();
    Route::bind('eventslug', function ($value) {
        preg_match('/d+/', strrev($value), $matches);
        return Event::find($matches[0]) ?? abort(404);
    });
}

或尝试调整网址,如:

user/event-description-here5_now/{event_id}

以上是关于通过删除Laravel中的额外字符,从斜杠分隔的URL中提取参数值的主要内容,如果未能解决你的问题,请参考以下文章

从 Laravel 中的 JSON 字符串中删除添加的反斜杠

在从laravel ajax返回的json中的每个斜杠中获取额外的反斜杠“\”

python如何去掉字符串中的斜杠

从 JAVA 中的字符串(从 url 类型更改)中删除尾部斜杠

验证或删除 laravel 中的额外字段

从$u GET和$u POST数组中删除斜杠