PHP: вывод нескольких строк командной строки в виде разных строк - PullRequest
1 голос
/ 18 июня 2009

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 ]

4 голосов
/ 18 июня 2009

почему вы используете nl2br, если это в командной строке?

nl2br выводит <br /> теги для новых строк ... которые не имеют значения в командной строке

Редактировать

Две вещи:

1 попробуй

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

2 Возможно, вы захотите использовать функцию exec вместо system

* * 1 022, например,
exec('cd /var/www/upload/files; clamscan --remove=yes '.$furl, $scanme);
$scanme = implode("\n",$scanme);

exec (строка $ command [, массив & $ output [, int & $ return_var]])

1 голос
/ 18 июня 2009

Вы пытались просто напечатать вывод команды напрямую?

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

PS. Вы действительно должны очистить входные данные следующим образом (если вы этого еще не сделали):

$furl = escapeshellarg($furl)

escapeshellarg () - экранировать строку, которая будет использоваться в качестве аргумента оболочки

0 голосов
/ 18 июня 2009

Если вы работаете в командной строке, новая строка представляется в виде \ n или \ r \ n в среде Windows. Поэтому убедитесь, что в конце каждой строки есть \ n, и вы должны получить желаемый результат. Edit:
Том: Упс. Исправлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...