2009-08-18 13 views
1

'/srv/www/site.com/htdocs/system/application/views/'があり、パス内の各ディレクトリ名と一致する正規表現に対してテストしたいとしますか?このようなパターンpreg_match()(または他のPHP正規表現関数)は、可変数のカッコで囲まれたサブパターンと一致することができますか?

何か'(/[^/])''srv','www','site.com'...などを持つ配列を生成する

PS:私が書いた正規表現構文だけで説明するために、それはテストされていないと確かに間違っているが、ちょうど与えることアイディア。

PS2:私はexplode()があります知っているが、我々は正規表現でこれを行うことができるかどうかを見てみましょう(それが爆発していない他の言語やフレームワークのために便利です)。

答えて

4

preg_match_all

$str = '/srv/www/site.com/htdocs/system/application/views/'; 

preg_match_all('/\/([^\/]+)/', $str, $matches); 

// $matches[0] contains matching strings 
// $matches[1] contains first subgroup matches 
print_r($matches[1]); 

出力:

Array 
(
    [0] => srv 
    [1] => www 
    [2] => site.com 
    [3] => htdocs 
    [4] => system 
    [5] => application 
    [6] => views 
) 
1

正規表現でexplodeに似たファイルを分割するためのpreg_splitがあり、次にあなたが望むことを行うpreg_match_allがあります。

1

私はあなたができるとは思わないが、あなたの代わりに正規表現から複数の一致を得るためにpreg_match_all()を使用することができます。より適切かもしれないpreg_split()もあります。

関連する問題