2015-06-09 61 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]))