2014-04-30 18 views
0

我猜這個函數在PHP的確切工作:preg_match_allpreg_match_all解釋

$var = "Example"; 
$n = preg_match_all('/[AEIOU]/i', strtoupper($var), $matches); 

echo "$n<p>"; // Output: 3 
echo $matches[0][1]; // Output: A 

這幾乎是完全清楚對我說:查找元音的所有比賽中的變量$var,放在$n其數量,而找到的匹配進入變量$matches。但是,如果第一個索引必須爲0,爲什麼$matches是一個二維數組?它不應該是像$matches[1]? (但它不起作用)

如何利用下一個索引?

+3

「按照標誌排列的多維數組中所有匹配的數組」。 - 來自文檔。閱讀有關標誌。 http://us1.php.net/manual/en/function.preg-match-all.php – Jessica

+2

是否因爲這樣設計而成爲答案? )當需要使用捕獲組時,'$ matches [1..n]'是非常有用的。 – raina77ow

+0

請注意,我修改器在這裏是沒用的 –

回答

1

「第一個索引必須爲0」,因爲這是「整個匹配」的索引。索引1將在第一個子模式中使用,如果有的話。索引2第二個子模式,依此類推。

此行爲可以使用PREG_*_ORDER常數進行調整,請參閱docs

+0

我不知道這種模式的事情,但在探索鏈接後,我似乎更多地瞭解了文檔。由於我不使用子模式,我確信我可以使用'$ matches = $ matches [0];'(不丟失數據)來解決 – user1714647

+0

當然,這是正確的。 –