2017-04-23 56 views
0

roures.php文件有包含如何解析Laravel路径文件?

Route::get('roles/create',['as'=>'roles.create','uses'=>'[email protected]','middleware' => ['permission:role-create']]); 
    Route::post('roles/create',['as'=>'roles.store','uses'=>'[email protected]','middleware' => ['permission:role-create']]); 
    Route::get('roles/{id}',['as'=>'roles.show','uses'=>'[email protected]']); 
    Route::get('roles/{id}/edit',['as'=>'roles.edit','uses'=>'[email protected]','middleware' => ['permission:role-edit']]); 
    Route::patch('roles/{id}',['as'=>'roles.update','uses'=>'[email protected]','middleware' => ['permission:role-edit']]); 
    Route::delete('roles/{id}',['as'=>'roles.destroy','uses'=>'[email protected]','middleware' => ['permission:role-delete']]); 

    Route::get('itemCRUD2',['as'=>'itemCRUD2.index','uses'=>'[email protected]','middleware' => ['permission:item-list|item-create|item-edit|item-delete']]); 
    Route::get('itemCRUD2/create',['as'=>'itemCRUD2.create','uses'=>'[email protected]','middleware' => ['permission:item-create']]); 
    Route::post('itemCRUD2/create',['as'=>'itemCRUD2.store','uses'=>'[email protected]','middleware' => ['permission:item-create']]); 
    Route::get('itemCRUD2/{id}',['as'=>'itemCRUD2.show','uses'=>'[email protected]']); 
    Route::get('itemCRUD2/{id}/edit',['as'=>'itemCRUD2.edit','uses'=>'[email protected]','middleware' => ['permission:item-edit']]); 
    Route::patch('itemCRUD2/{id}',['as'=>'itemCRUD2.update','uses'=>'[email protected]','middleware' => ['permission:item-edit']]); 
    Route::delete('itemCRUD2/{id}',['as'=>'itemCRUD2.destroy','uses'=>'[email protected]','middleware' => ['permission:item-delete']]); 

预期输出:

[ 
    [ 
    `url` => 'roles/create', 
    'as' => 'roles.create', 
    'uses'=>'[email protected]' 
    ], 
[ 
    `url` => 'roles/create', 
    'as' => 'roles.store', 
    'uses'=>'[email protected]' 
    ], 
] 

如等

回答

3

在这里你可以得到使用file_get_content文件内容,我们使用正则表达式使用正则表达式解析文件内容。

正则表达式:/get\s*\(\s*'\K[^']+|as'\s*=>\s*'\K[^']+|uses'\s*=>\s*'\K[^']+/

get\s*\(\s*'\K[^']+这里将匹配例子:get('比赛直到'

as'\s*=>\s*'\K[^']+这里将匹配例子:as'=>'比赛直到'

uses'\s*=>\s*'\K[^']+这里将匹配例子:uses'=>'比赛直到'

Try this code snippet here

<?php 
ini_set('display_errors', 1); 
$string="Route::get('roles/create',['as'=>'roles.create','uses'=>'[email protected]','middleware' => ['permission:role-create']]); 
    Route::post('roles/create',['as'=>'roles.store','uses'=>'[email protected]','middleware' => ['permission:role-create']]); 
    Route::get('roles/{id}',['as'=>'roles.show','uses'=>'[email protected]']); 
    Route::get('roles/{id}/edit',['as'=>'roles.edit','uses'=>'[email protected]','middleware' => ['permission:role-edit']]); 
    Route::patch('roles/{id}',['as'=>'roles.update','uses'=>'[email protected]','middleware' => ['permission:role-edit']]); 
    Route::delete('roles/{id}',['as'=>'roles.destroy','uses'=>'[email protected]','middleware' => ['permission:role-delete']]); 

    Route::get('itemCRUD2',['as'=>'itemCRUD2.index','uses'=>'[email protected]','middleware' => ['permission:item-list|item-create|item-edit|item-delete']]); 
    Route::get('itemCRUD2/create',['as'=>'itemCRUD2.create','uses'=>'[email protected]','middleware' => ['permission:item-create']]); 
    Route::post('itemCRUD2/create',['as'=>'itemCRUD2.store','uses'=>'[email protected]','middleware' => ['permission:item-create']]); 
    Route::get('itemCRUD2/{id}',['as'=>'itemCRUD2.show','uses'=>'[email protected]']); 
    Route::get('itemCRUD2/{id}/edit',['as'=>'itemCRUD2.edit','uses'=>'[email protected]','middleware' => ['permission:item-edit']]); 
    Route::patch('itemCRUD2/{id}',['as'=>'itemCRUD2.update','uses'=>'[email protected]','middleware' => ['permission:item-edit']]); 
    Route::delete('itemCRUD2/{id}',['as'=>'itemCRUD2.destroy','uses'=>'[email protected]','middleware' => ['permission:item-delete']]);"; 


preg_match_all("/get\s*\(\s*'\K[^']+|as'\s*=>\s*'\K[^']+|uses'\s*=>\s*'\K[^']+/", $string,$matches); 
$result=array(); 
for($x=0;$x<count($matches[0]);$x+=3) 
{ 
    $result[]=array(
     'url'=>$matches[0][$x], 
     'as'=>$matches[0][$x+1], 
     'uses'=>$matches[0][$x+2] 
    ); 
} 
print_r($result); 
2

使用下面的正则表达式匹配和替换:

比赛:​​

替换:[网址=> $1, 'as' => $2, 'uses' => $3]

PS。无论你来到何处,都可以使用\s *来抵消它