PHPのpreg_match関数でディレクトリパスをパースしたいのですが、/の分割で上手くパースしてくれません。
/aaaa/bbbb/ccc/を各ディレクトリ名を取り出したく、パターン'#^/(.+?)/(.+?)/(.+?)/$#' で最短マッチさせた場合、
期待通りの結果を得られます。
$sts = preg_match('#^/(.+?)/(.+?)/(.+?)/$#', '/aaaa/bbbb/ccc/', $matches);
if($sts) var_dump($matches);
結果)
array(4) {
[0]=>
string(15) "/aaaa/bbbb/ccc/"
[1]=>
string(4) "aaaa"
[2]=>
string(4) "bbbb"
[3]=>
string(3) "ccc"
}
ですが、どうしても'#^/(.+?)/(.+?)/$#'のパターンでもマッチしてしまいます。
$sts = preg_match('#^/(.+?)/(.+?)/$#', '/aaaa/bbbb/ccc/', $matches);
if($sts) var_dump($matches);
結果)
array(3) {
[0]=>
string(15) "/aaaa/bbbb/ccc/"
[1]=>
string(4) "aaaa"
[2]=>
string(8) "bbbb/ccc"
}
bbbb/cccが最短マッチが効いていない感じがしますが、この場合どの様なパターンを記述すれば良いのでしょか?
宜しくお願いします。
*explode関数ではなく、今回は正規表現にて実現したく考えております。
回答2件
あなたの回答
tips
プレビュー