PHP: Output mehrzeilige Befehlszeilenausgänge als unterschiedliche Linien
-
06-07-2019 - |
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)
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.