PHP:将多行命令行输出输出为不同的行

时间:2009-06-18 07:12:11

标签: php command-line command lines

PHP:将多行命令行输出输出为不同的行。 对不起,标题很难理解。基本上我希望我的输出像A,而不是B.它目前看起来像B.我试过nl2br。我试图运行的脚本是:

脚本:

echo "Virus Scan Results:";
$scanme = system('cd /var/www/upload/files; clamscan --remove=yes '.$furl);
printf(nl2br($scanme));

A:

802931t_e_s_t.txt: OK 
----------- SCAN SUMMARY ----------- 
Known viruses: 574585 
Engine version: 0.95.1 
Scanned directories: 0 
Scanned files: 1 
Infected files: 0 
Data scanned: 0.00 MB 
Data read: 0.00 MB (ratio 0.00:1) 
Time: 2.352 sec (0 m 2 s) 
Time: 2.352 sec (0 m 2 s)

B:

802931t_e_s_t.txt: OK ----------- SCAN SUMMARY ----------- Known viruses: 574585 Engine version: 0.95.1 Scanned directories: 0 Scanned files: 1 Infected files: 0 Data scanned: 0.00 MB Data read: 0.00 MB (ratio 0.00:1) Time: 2.352 sec (0 m 2 s) Time: 2.352 sec (0 m 2 s)

3 个答案:

答案 0 :(得分:3)

如果这是在命令行上,你为什么使用nl2br?

nl2br为新行输出<br />标签...这在命令行上没有任何意义

修改

两件事:

1 尝试

system('cd /var/www/upload/files; clamscan --remove=yes '.$furl, $scanme);

2 您可能希望使用exec功能而不是系统

e.g。

exec('cd /var/www/upload/files; clamscan --remove=yes '.$furl, $scanme);
$scanme = implode("\n",$scanme);

exec(string $ command [,array&amp; $ output [,int&amp; $ return_var]])

答案 1 :(得分:1)

您是否尝试过直接打印命令的输出?

echo "Virus Scan Results:";
echo exec('cd /var/www/upload/files; clamscan --remove=yes '.$furl);

PS。你真的应该像这样清理输入(如果你还没有这样做):

$furl = escapeshellarg($furl)

escapeshellarg() - 转义一个字符串以用作shell参数

答案 2 :(得分:0)

如果您在命令行上运行,则在Windows环境中将换行符表示为“\ n”或“\ r \ n”。因此,请确保每行末尾都有\ n,您应该获得所需的输出。 编辑:
汤姆:哎呀。固定的。