1

ここで、slim3 のサンプルFastRoute :

$app->get('/api/search/[{domaine}[/{notused:.+}]]', function ($request, $response, $args) {
    return $this->renderer->render($response, 'index.phtml', $args);
});

この FastRoute の「正規表現」([{domaine}[/{notused:.+}]]) では、次のように一致します。

/api/search/sample.com  
/api/search/sample.com/test  
/api/search/  

そして $args['domaine'] は "sample.com" を返します。

しかし、私もこれを一致させたい:

/api/search/http://sample.com  
/api/search/https://sample.com  

この作品のような新しいルートを追加します:

$app->get('/api/search/http://[{domaine}[/{notused:.+}]]' ...   
$app->get('/api/search/https://[{domaine}[/{notused:.+}]]' ...  

ただし、1行だけにする方が良いです。

何か案は ?

4

1 に答える 1

1

url エンコードされた url をクエリ パラメータとして使用する方がよいでしょう。

しかし、これを実際に何に使用するかについては、http(s) の部分も正規表現できます。

$app->get('/api/search/{urlSchema:https?}://[{domaine}[/{notused:.+}]]', ..);

つまり、必要httpであり、 0-1 を持っていsます。

于 2017-01-11T16:23:05.907 に答える