2009-11-29 157 views
0

我想在以下匹配FDSize: <value>PHP preg_match_all()匹配

Gid: 48  48  48  48 
FDSize: 64 
Groups: 48 425 
VmPeak: 289928 kB 

它來自的/ proc /狀態

<value>不是一個固定的長度,並且既不是線的上方或下方。

+2

爲什麼用PHP?問題是什麼?解析文件?正則表達式?總是隻有一個你感興趣的FDSize? – 2009-11-29 16:00:10

回答

0

嘗試是這樣的:

preg_match_all('`FDSize: (\\d+)`s', $subject, $matches); 
print_r($matches); 
0

真的不知道爲什麼/如何/當你做到這一點。我應該在發佈答案之前提出問題,但我沒有。這裏有一些方法來獲取某一行的,雖然......

$line = 'Gid: 48 48 48 48 FDSize: 64 Groups: 48 425 VmPeak: 289928 kB'; 

// in a loop... 
echo current(explode(' ', end(explode('FDSize: ', $line)))); 

// or 

preg_match_all('~fdsize: (\d+)~i', $line, $matches); 
0
$mystr='Gid: 48 48 48 48 FDSize: 64 Groups: 48 425 VmPeak: 289928 kB'; 
$str = explode(":",$mystr); 
foreach($str as $k=>$word){ 
    if(strpos($word,"FDSize") !== FALSE){ 
     print $str[$k+1]; 
    } 
} 
+0

你應該總是避免循環,如果你可以 – Galen 2009-11-29 16:14:29

+0

這是胡說八道。你從哪裏得到這個概念。 – ghostdog74 2009-11-30 00:13:02

0

嘗試

preg_match_all("/FDSize:\s([0-9]+)/msiU", $data_in, $matches);