如何解析字符串/ stream_get_contents

时间:2015-06-17 18:32:50

标签: php regex

我将使用exec PHP函数来运行命令并获得响应,如下所示:

$stream = ssh2_exec($conn, 'php -v');
stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
$data= stream_get_contents($stream_out);

我希望返回的数据采用表格格式,例如:

enter image description here

所以我有兴趣获得Userid值。最好的方法是什么?也许链接到可能使用的PHP函数?

stackoverflow上的大多数帖子都提示substr,但我不认为我可以使用它,因为该表可能更大或更小。

1 个答案:

答案 0 :(得分:1)

考虑到您的输入看起来像

--------------Table1----------- 
fname | lname | userid 
----------------------------------- 
 jakson   jack          3
 nils        smith       44

您可以使用preg_match_all的简单正则表达式:

(?m)\d+(?=\s*$)

REGEX EXPLANATION

  • (?m)强制$在一行的末尾匹配,而不是在整个输入字符串的末尾匹配
  • \d+将匹配0到9之间的一个或多个数字,因此将匹配ID
  • (?=\s*$) - 前瞻性检查可选空格(\s* \s代表\r\n\f\t和空格,而*是量词,意为0或更多出现的前一个子模式)和行结束($)。请注意,前瞻不会消耗文本,并且它们永远不会成为匹配项。

在PHP中,您需要声明带有分隔符的正则表达式,例如

$pattern = "#\d+(?=\s*$)#m";