如何从php输出中省略行

时间:2017-12-12 16:17:39

标签: php bash

我想用php执行gotty top -c命令。在shell上Gotty给出了下面的命令

2017/12/12 17:09:45 GoTTY is starting with command: top -c
2017/12/12 17:09:45 HTTP server is listening at: http://:::8080/
2017/12/12 17:09:45 Alternative URL: http://127.0.0.1:8080/
2017/12/12 17:09:45 Alternative URL: http://::1:8080/
2017/12/12 17:09:45 Alternative URL: http://88.198.110.71:8080/

在浏览器上,我只想显示http://88.198.110.71:8080/网址。

我尝试使用以下代码获取此功能,但它不适用于我

$output = shell_exec('/bin/gotty top -c');
echo "<pre>$output</pre>";

如何使用php获取此输出?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用grep来获得所需内容。默认情况下,它将返回完整的行,但如果您传递选项-o,则o将返回匹配的部分:

/bin/gotty top -c | grep -o 'http://.*'

这将打印

http://:::8080/
http://127.0.0.1:8080/
http://::1:8080/
http://88.198.110.71:8080/

要只输出输出中的最后一行,您可以使用tail

/bin/gotty top -c | grep -o 'http://.*' | tail -1

输出:

http://88.198.110.71:8080/

答案 1 :(得分:0)

此输出可能仅转到STDERR,因此您需要重定向到STDOUT。此外,如果您只想要输出的最后一行,exec()命令可以轻松获得。

<?php
$last_line = exec("/bin/gotty top -c 2>&1", $full_output, $exit_status);
echo "<pre>$last_line</pre>";