例えば下記のようなURLがあったとします。
http://samples.com/hoge/param1/param2/param3/param4/....../paramN http://samples.com/hoge/param1/param2/param3/param4/....../paramN/ http://samples.com/hoge/param1/param2/param3/param4/....../paramN?getparam1=1&getparam2=2
上記のパス
$path = /hoge/param1/param2/param3/param4/....../paramN $path = /hoge/param1/param2/param3/param4/....../paramN/ $path = /hoge/param1/param2/param3/param4/....../paramN?getparam1=1&getparam2=2
からpreg_match使ってparam1,param2,...,paramN(可変長)
を取得したい。
preg_match($path,$regex,$values);
下記のように取得したい
$values = array(param1,param2,param3,param4,....,paramN);
preg_match以外の方法であれば容易にできるが、事情がありpreg_matchで取得したいのですが、このような正規表現をできる$regexはどのように記述すれば良いでしょうか?
###追記
目的としてはこれはリクエストを振り分けるのルーティング部分の処理になります。
/hogeから始まる場合それ以降の単語をパラメータとして扱いたいため、
正規表現で/hogeから始まる場合それ以降のpara1〜paraN(可変)を取得したい
です。
現状ルーティング部を処理するクラスが、何種類かあり今回のような構造の場合処理するクラスは正規表現を使って解析をするルータークラスが一番近かったので、できればそれを使用したい。
ただしその内部でつかっているのはpreg_matchであるため、preg_matchしか使えないという意味で「事情があり」とさせていただいておりました。
もしpreg_matchでは不可能な場合、別途独自にそのルーティングクラスの派生クラスを作らないといけないのでがそれはできれば避けたい為質問させて頂きました。
質問ではpara1などpara+数字の形式が固定かのように見えますが、これも説明不足でした、URLに使用可能な文字でお願い致します。
追記:
既存のクラスにパラメータとして正規表現のパターンを渡すと内部でpreg_matchで解析するというクラスの為、派生クラスをつくらず既存クラスを使う場合、こちらが触れるのは正規表現パターンのみです。
回答2件
あなたの回答
tips
プレビュー