考慮下面的PHP代碼:動態捕獲組在正則表達式
<?php
$str = '/foo/bar/baz';
preg_match('#^(/[^/]+?)*$#', $str, $matches);
var_dump($matches);
...我得到以下輸出:
array (size=2)
0 => string '/foo/bar/baz' (length=12)
1 => string '/baz' (length=4)
...但我不明白爲什麼。我期望的(/[^/]+?)
每場比賽被捕獲到它自己的組並堅持到$matches
,使得它看起來像這個:
array (size=4)
0 => string '/foo/bar/baz' (length=12)
1 => string '/foo' (length=4)
2 => string '/bar' (length=4)
3 => string '/baz' (length=4)
我缺少什麼?
編輯:
這是輸出,如果我用preg_match_all()
代替,這仍然不是我要找:
array (size=2)
0 =>
array (size=1)
0 => string '/foo/bar/baz' (length=12)
1 =>
array (size=1)
0 => string '/baz' (length=4)
這不是'preg_match_all()'的作用。它會給我基本上相同的輸出,按比賽分開,但只有一場比賽。 – FtDRbwLXw6 2012-08-11 04:28:07
我用'preg_match_all()'的輸出編輯了問題。 – FtDRbwLXw6 2012-08-11 04:30:29