するpreg_match()(または他のPHPの正規表現機能)括弧で囲まれたサブパターンの可変数を一致させることはできますか?
-
18-09-2019 - |
質問
私は'/srv/www/site.com/htdocs/system/application/views/'
を持っていると、パス内の各ディレクトリ名と一致する正規表現に対してそれをテストしたいと?
'(/[^/])'
:
サムシングのこのようなパターン
それは'srv','www','site.com'...
などで配列を得ています。
PS:私が書いた正規表現構文だけで、説明することがテストされていないと確かに間違っているが、ちょうどアイデアを与えることです。
PS2:私はexplode()
があります知っているが、(それが爆発していない他の言語やフレームワークのために便利です)私たちは正規表現でこれを行うことができるかどうかを見てみましょう。
解決
$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
)
他のヒント
preg_split
には、正規表現でファイルを分割するためにあります爆発に類似して、 preg_match_al
l のこれがありますあなたが欲しいものを行います。
私はあなたができるとは思わないが、あなたはその代わりに複数の一致を得るために preg_match_all()に使用することができます正規表現。より適切であり得る preg_split()のもある。
所属していません StackOverflow