2009-06-18 7 views
0

PHP: Sortie de plusieurs lignes de ligne de commande en tant que lignes différentes. Désolé, le titre est difficile à comprendre. Fondamentalement, je veux ma sortie comme A, au lieu de B. Il ressemble actuellement à B. J'ai essayé nl2br. Le script que je suis en train de courir est:PHP: Sortie de sorties de ligne de commande à plusieurs lignes sous forme de lignes différentes

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) 

Répondre

3

pourquoi vous utilisez nl2br si c'est sur la ligne de commande?

sorties nl2br <br /> tags pour les nouvelles lignes ... qui aurait aucun sens sur la ligne de commande

Modifier

Deux choses:

essayer

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

Vous pouvez utiliser la fonction exec au lieu du système

par exemple.

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

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

+0

Le résultat est:

 733141t_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.305 sec (0 m 2 s) Time: 2.305 sec (0 m 2 s) 
Il semble affecter seulement la dernière ligne. Vous avez d'autres idées? – Mentalikryst

+0

733141t_e_s_t.txt: OK ----------- RESUME SCAN ----------- Virus connus: 574585 Version du moteur: 0.95.1 Répertoires analysés: 0 Fichiers analysés: 1 Fichiers infectés : 0 Données analysées: 0.00 Mo Données lues: 0.00 Mo (rapport 0.00: 1) Durée: 2.305 sec (0 m 2 s) Temps: 2,305 sec (0 m 2 s) – Mentalikryst

+0

Fonctionne maintenant, il semble que le scanme $ ait réellement sorti les données sans écho ou printf. Merci pour l'aide. – Mentalikryst

0

Si vous utilisez sur la ligne de commande, une nouvelle ligne est représentée comme '\ n' ou '\ r \ n' dans un environnement Windows. Donc, assurez-vous qu'il y a un \ n à la fin de chaque ligne, et vous devriez obtenir la sortie que vous voulez. Editer:
Tom: Oups. Fixé.

+0

Windows est –

1

Avez-vous essayé d'imprimer directement la sortie de la commande?

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

PS. Vous devriez vraiment désinfectez l'entrée comme si (si vous ne le faites déjà):

$furl = escapeshellarg($furl) 

escapeshellarg() - Protège une chaîne à utiliser comme argument shell

+0

Déjà nettoyé, en haut du script. – Mentalikryst

Questions connexes