Frage

PHP: Output mehrzeilige Befehlszeilenausgänge als verschiedene Linien. Sorry, wenn der Titel schwer zu verstehen ist. Grundsätzlich möchte ich meine Ausgabe wie A, anstelle von B. Es ist derzeit wie B. sieht ich nl2br versucht haben. Das Skript, das ich zu laufen versuche ist:

Script:

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)

War es hilfreich?

Lösung

Warum verwenden Sie nl2br, wenn diese auf der Kommandozeile ist?

nl2br Ausgänge <br /> Tags für neue Zeilen ..., die keine Bedeutung auf der Kommandozeile haben würde

Bearbeiten

Zwei Dinge:

1 versuchen

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

2 Sie möchten die exec verwenden Funktion anstelle des Systems

z.

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

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

Andere Tipps

Haben Sie versucht, nur den Druck der Ausgabe des Befehls direkt?

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

PS. Sie sollten sich wirklich die Eingabe wie so sanieren (wenn Sie nicht bereits tun):

$furl = escapeshellarg($furl)

escapeshellarg () - Maskiert einen String als verwendet werden ein Shell-Argument

Wenn Sie auf der Kommandozeile ausgeführt werden, ein Newline wird als '\ n' dargestellt wird, oder '\ r \ n' in einer Windows-Umgebung. So stellen Sie sicher, gibt es eine \ n am Ende jeder Zeile, und Sie sollten die Ausgabe Sie wollen. Edit:
Tom: Oops. Festgelegt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top