PHPでMVCベースのサイトのルート処理クラスを書き直しており、URLのページ付け文字列を検出するための正規表現が必要です。ページネーションストリングは、3つの異なる部分で構成されています。
- ページ番号の検出:
/page/[NUMERIC]/
- ページごとのアイテムの検出:
/per_page/[NUMERIC]/
- 注文検出:
/sort/[ALMOST_ANY_CHARACTER]/[asc or desc]/
以前に開発された方法により、これらの3つの部分は任意の順序にすることができます。作業を続ける必要のある既存のリンクと、ページ付けを処理するために使用されるコードがいくつかあります(再書き込みの計画はまだありません)。したがって、常に一貫したURLを生成するようにページ付けコードを変更することはできません。
したがって、ページネーション構造のすべての可能な組み合わせを検出するために、正規表現パターンを作成する必要があります。各パーツを検出するための3つのパターンがあり、次のとおりです。
- ページ番号の検出:
(page/\d+)
- ページごとのアイテムの検出:
(per_page/\d+)
- 注文検出:
(sort/([a-zA-Z0-9\.\-_%=]+)/(asc|desc))
複雑な(とにかくこれは私にとって複雑です!)正規表現パターンを書くのは初めてですが、私が考えることができるのは、各URL構造に対して持っている3つのパターンを2つ組み合わせることだけです(例:/ pagenum / ordering / perpage /、 / pagenum / perpage / ordering /)および|の使用 'または'ステートメントとしての演算子。
これを行うためのより良い/より効率的な方法はありますか?
を使用して正規表現を実行していpreg_match
ます。