2010-04-02 4 views
2

question stupide, ce code:() en PHP imprime variables 2 fois

<?php 
$variable = system("cat /home/maxor/test.txt"); 
echo $variable; 
?> 

avec le fichier test.txt:

blah 

impressions:

blah 
blah 

Que peut Je fais avec la fonction system() pour ne rien imprimer donc je reçois 1 "blah" ???

Répondre

2

Selon le manuel - voir system():

system() est comme la version C de la fonction en ce qu'elle exécute la commande donnée et sort le résultat.

Ce qui explique la première blah


Et:

Renvoie la dernière ligne de la commande sortie sur le succès

Et vous faisant écho à la retour valeur - ce qui explique la seconde blah.


Si vous voulez exécuter une commande et obtenir la sortie complète à une variable, vous devriez jeter un oeil à exec ou shell_exec. Le premier vous obtiendra toutes les lignes de la sortie à un tableau (voir le deuxième paramètre); et le second vous obtiendra la sortie complète en tant que chaîne.

0

system appelle le programme cat réel, qui est en sortie "blah" de test.txt. Il renvoie également la valeur $variable que vous imprimez à nouveau.

Utilisez exec ou shell_exec au lieu du système.

5

system affiche le résultat du programme et renvoie la dernière ligne de sortie.

exec affiche rien et renvoie la dernière ligne de sortie.

passthru affiche tout ce que le programme sort et ne renvoie rien.

2

Utilisez plutôt exec. Pour obtenir toute la sortie, plutôt que de simplement la dernière ligne, faites ceci:

$variable = array(); 
$lastline = exec("cat /home/maxor/test.txt", $variable); 
echo implode("\n", $variable);