PHP preg_match_all() Сопоставление

Я хочу сопоставить FDSize: <value> в следующем:

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

Это происходит из /proc/status

<value> не имеет фиксированной длины, как и строки выше или ниже.


person OGe    schedule 29.11.2009    source источник
comment
Почему с PHP? И в чем проблема? Разбор файла? Придумать регулярное выражение? И всегда ли вас интересует только одно FDSize?   -  person Bart Kiers    schedule 29.11.2009


Ответы (4)


Попробуйте что-то вроде этого:

preg_match_all('`FDSize: (\\d+)`s', $subject, $matches);
print_r($matches);
person Kamil Szot    schedule 29.11.2009

Не совсем уверен, почему/как/когда вы должны это сделать. Я должен был задать вопросы, прежде чем публиковать ответ, но я этого не сделал. Вот несколько способов избавиться от этого...

$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);
person Galen    schedule 29.11.2009

пытаться

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

person Ass3mbler    schedule 29.11.2009

person    schedule
comment
Вы всегда должны избегать циклов, если можете - person Galen; 29.11.2009