问题格式化php输出

时间:2011-09-23 15:33:12

标签: php

我有一个php网站,我想用来从unix服务器收集信息。一个很好的例子是一个ssh到服务器并运行ls命令的脚本。我在格式化输出时遇到问题,因此它是可读的。任何帮助,将不胜感激。代码看起来像这样:

$output = system("ssh user@testServer ls -al");
print ($output);

4 个答案:

答案 0 :(得分:6)

您可能想要使用

echo "<pre>";
echo system("ssh user@testServer ls -al");
echo "</pre>";

以$输出显示代码(3个空格显示为3个空格,新行显示为新行)

答案 1 :(得分:1)

问题是这个

  

system()调用还会尝试自动刷新Web服务器   如果PHP作为服务器运行,则在每行输出后输出缓冲区   模块。

所以你需要这样做:

echo '<pre>';
$output = system("ssh user@testServer ls -al");
echo '</pre>';

<强>替代
正如Deebster建议的那样,如果您在服务器上启用了exec功能,您也可以这样做

$output = null;
exec("ssh user@testServer ls -al", $output);
echo '<pre>';
foreach($output as $line)
    echo $line . "\n";
echo '</pre>';

答案 2 :(得分:0)

尝试使用htmlspecialchars()来转义任何会导致HTML中呈现问题的内容:

print '<pre>' . htmlspecialchars($output) . '</pre>';

pre标签将尊重空格并默认为等宽字体,因此您的线条看起来就像在控制台中一样。

答案 3 :(得分:0)

未经测试但我猜它会起作用 因为php doc说

  

system()调用还会尝试自动刷新Web服务器   如果PHP作为服务器运行,则在每行输出后输出缓冲区   模块。

ob_start();
system("ssh user@testServer ls -al");

$output = ob_get_clean();

echo '<pre>';
echo $output; 
echo '</pre>';