2012-04-17 51 views
0

我有,例如,下面的字符串:PHP preg_match_all:提取逗號分隔的列表

{WIDGET_TEST('abc','456')} 

我希望能夠使用preg_match_all返回的逗號分隔的參數數組。

任何人都可以用我需要的正則表達式來幫助我嗎?

我試過和下面的查詢返回(a,b)

preg_match_all('/\([a-zA-Z0-9\',]+\)/', '{WIDGET_TEST(a,b)}', $arguments); 

但我離開戰鬥得到這樣的結果是一個數組,正則表達式休息時,我介紹了單引號?

編輯 使用下列內容:

preg_match_all('/(\'[a-zA-Z0-9,]+\')/', '{WIDGET_TEST('variable1','b')}', $arguments); 

我得到:

array 
    0 => 
    array 
     0 => string ''variable1'' (length=11) 
     1 => string ''b'' (length=3) 
    1 => 
    array 
     0 => string ''variable1'' (length=11) 
     1 => string ''b'' (length=3) 

所以請相信我是有一部分的方式...

+0

由於語法的複雜性,這不能在單個正則表達式中可靠地解析,而沒有像單引號內部的未轉義的'''等警告。我會建議修剪幷包括圓括號,然後分別解析參數。 – cmbuckley 2012-04-17 15:49:38

+0

謝謝,我已經更新了我的答案,因爲我取得了進展... – Sjwdavies 2012-04-17 16:03:00

回答

1

我想,如果你嘗試下面的正則表達式它應該適合你需要的東西:

preg_match_all('/([a-zA-Z0-9_]+)/', '{WIDGET_TEST(\'variable1\', \'b\')}', $classname); 

它應該從輸入字符串返回從'abcdEDFGHJ123'構造的字符串。說穿了,它會返回一個新的結果,當字符串從這個makup中斷。

+0

This Works!謝謝 – Sjwdavies 2012-04-17 16:57:12