I'm trying to get certain ids from a string, but I can't get it to work. I'm getting values that I'm not expecting in my result.
This is what I have:
<?php
$grep = ' 7027 ? S 0:00 nginx: worker process
7632 ? S 0:00 sh -c ps ax | grep nginx
7634 ? S 0:00 grep nginx
16117 ? Ss 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf';
if ( preg_match_all('~([0-9]+) \?(.*?)nginx:~si', $grep, $matches) )
{
echo '<pre>';
print_r($matches);
echo '</pre>';
}
What I'm expecting here with: ~([0-9]+) \?(.*?)nginx:
is that it would match these two lines:
7027 ? S 0:00 nginx: worker process
16117 ? Ss 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf';
I'm specifically after their process id, in this case: 7027
and 16117
.
But I'm getting: 7027
and 7632
instead.
How should my regex look to get the data that I want?
Here's a demo: http://codepad.viper-7.com/2R5OfF