2009-08-18 5 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

我不認爲你可以,但你也可以使用preg_match_all()從正則表達式獲取多個匹配。還有preg_split()這可能更合適。