2015-06-09 73 views
0

我有一個字符串,它看起來就像這樣:preg_match_all給未知的結果

"first: [[1394,97],[13944,97]], 
second: [[1394,11400],[13944,7898]]" 

我試圖使用PHP preg_match_all簡單地給我(除去「第一」,「第二」)

[1394,97],[13944,97],[1394,11400],[13944,7898] 

這樣我就可以使用它創建數組。

當我使用正則表達式:

$reg = "/(\[?(?:\[(\d{1,}),(\d{1,})\]))/"; 
preg_match_all($reg, $input_string, $matches); 

我不明白輸出:

array (size=4) 
    0 => 
    array (size=4) 
     0 => string '[[1394,97]' (length=10) 
     1 => string '[13944,97]' (length=10) 
     2 => string '[[1394,11400]' (length=13) 
     3 => string '[13944,7898]' (length=12) 
    1 => 
    array (size=4) 
     0 => string '[[1394,97]' (length=10) 
     1 => string '[13944,97]' (length=10) 
     2 => string '[[1394,11400]' (length=13) 
     3 => string '[13944,7898]' (length=12) 
    2 => 
    array (size=4) 
     0 => string '1394' (length=4) 
     1 => string '13944' (length=5) 
     2 => string '1394' (length=4) 
     3 => string '13944' (length=5) 
    3 => 
    array (size=4) 
     0 => string '97' (length=2) 
     1 => string '97' (length=2) 
     2 => string '11400' (length=5) 
     3 => string '7898' (length=4) 

如何修改只返回第一個數組,這就是我想要的嗎?

回答

2

剛剛擺脫所有捕獲括號()

$reg = "/\[\d{1,},\d{1,}\]/"; 
preg_match_all($reg, $input_string, $matches); 

會給你一個輸出

Array ([0] => Array ([0] => [1394,97] 
         [1] => [13944,97] 
         [2] => [1394,11400] 
         [3] => [13944,7898]))