2009-11-29 117 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);