在Laravel中获取URL之后的所有字符串

时间:2018-03-19 04:41:43

标签: php laravel

我使用Laravel 5.5并对路由有疑问。

我的路线是这样的

Route::get('/folder/{param}', 'PageController@getFolderTree');

我想在/ folder /:

之后获取所有参数

http://example.com/folder/com/example/app - >我得/ example / app

怎么可能?

3 个答案:

答案 0 :(得分:1)

如果您事先知道参数的最大数量,则可以执行下一个参数之一。

a)如果all are neccessery

Route::get('/folder/{a}/{b}/{c}', 'PageController@getFolderTree');

b)如果not all are neccessery

Route::get('/folder/{a?}/{b?}/{c?}', 'PageController@getFolderTree');

并像这样检索它们:

public function getFolderTree($a, $b, $c) {...}

如果你不知道最大值,你需要做一个正则表达式并爆炸。这将是路线:

Route::get('/folder/{any}', 'PageController@getFolderTree')
    ->where('any', '.*'); // Indicates that {any} can be anything

在控制器中进行爆炸:

public function getFolderTree($any) {
{
    $params = explode('/', $any); // $params will be an array of params
}

答案 1 :(得分:0)

您可以explode该网址。例如:

$url = 'http://example.com/folder/com/example/app';
$explodedText = explode('/folder/', $url);
$textBeforeFolder = $explodedText[0];
$textAfterFolder = $explodedText[1]; // This is the one you want

答案 2 :(得分:0)

request->url() //will return the whole url

request()->uri() //will return the URI

现在,如果您想访问完整的URL,您可以访问

request()-fullUrl() //will return the full url

现在您可以使用str_replace()

 str_replace(request()->url.'folder/com/','', request->fullUrl());

 //it will return example/app