2017-03-18 3 views
0

私は長い間CIでコーディングしていませんでしたが、私はこれまでより少し動的にしたルートのいくつかを書き直したいと思います。CodeIgniter Route - 正規表現はすべて一致します

何らかの理由で、私が追加したこの正規表現はすべて一致してしまい、理由を理解できません。

$route['([a-z]+-[a-z]+)'] = 'Main/example_function/$1'; 

これは、複数のフラグメントがあってもまだ割り当てられていない他のすべてのルートと一致します。経路の例として、それが一致します。

example.com/aaaaa 
example.com/aaaaa-asd 
example.com/aaaaa/aaaa 

を私はそれが特にこのスタイルのルートを照合する必要があります。

example.com/aaaaa-aaaaa 

私は別のルートではなく、フォームのexample.com/test/の他の正規表現を持っています([az] +)とうまく動作します。

宣言された他のルートの後に置くことは、すべてのルートがそこで宣言されているわけではないので、オプションではありません。

ありがとうございます!

+0

@SahilGulatiが提案したルールを使用し、そのルールを最後に置く - 最後のルールにする。 – Tpojka

+0

@Tpojka私が説明したように、最後のルールかどうかは重要ではありません(私は現在、最後のルールとして持っています)。 –

+0

CIルータは、urlをスラッシュ(セグメント)で解析しています。 concize regexp ruleはありますが、それはまだ1つのセグメントであり、2つ以上のセグメント化されたルートの後にそれを保持することが賢明でしょう。 – Tpojka

答えて

0

サヒールGulatiの答えのおかげで、私はエラーを出しました。

$route['([a-z]+\-[a-z]+)'] = 'Main/example_function/$1'; 

そして、それは正確に私が

感謝を望んでいたものと一致します:正しい正規表現です!

1

あなたがこれを必要とするか...

正規表現:^example\.com\/[a-z]+\-[a-z]+$

Regex demo

+0

解決策ではありませんが、それは正しい方向に私を指摘しました –

関連する問題