Laravel 路由参数不接受像 +(加号)这样的特殊字符

问题描述 投票:0回答:2

我有这条路线:

Route::get('product/get/{project_token}/{user_id}/{id}', 'get_project')->where('id', '.*'); 

这里的

id
参数,值可以是任何字符,如

DRGM48/58BA
DRGM48/78BA+BZA43B.
1254EBD

现在,如果

id
参数值是这个
DRGM48/78BA+BZA43B
那么我可以看到路由没有传递该值。好像+ 性格不接受

你能告诉我怎么解决吗?

php laravel
2个回答
0
投票

加号用于表示查询中的空格字符。所以为此,你必须使用

urlencode
urldecode

Ex

$product_id = urlencode('DRGM48/78BA+BZA43B');

在控制器中

public function get_project($project_token, $user_id, $id)
{
    $product_id = urldecode($id);
    // use $product_id in your code
}

0
投票

我在之前的项目中遇到了同样的问题。所以,我应用了多种解决方案但没有奏效。然后我找到了下面的解决方案。

说明:“+”字符是URL中的保留字符,用于表示空格。 Laravel 的路由参数使用“+”字符作为通配符,这意味着 + 字符之后的任何文本都将被忽略。

Route::get('product/get/{project_token}/{user_id}/{id}', 'get_project')->where('id', '[A-Za-z0-9\+/]+');

希望对你有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.