fusionner tous les fichiers dans le répertoire d'un fichier texte
En PHP, comment puis-je ouvrir everyfile, tous les fichiers de texte, dans un répertoire et de les fusionner en un seul fichier texte.
Je ne sais pas comment l'ouvrir tous les fichiers dans un répertoire, mais je voudrais utiliser le file()
de commande pour ouvrir le fichier suivant et puis un foreach pour ajouter chaque ligne d'un tableau.
comme:
$contents = array();
$line = file(/*next file in dir*/);
foreach($lines as line){
array_push($line, $contents);
}
Ensuite je voudrais écrire ce tableau dans un nouveau fichier texte que j'ai atteint pas plus de fichiers dans le répertoire.
si vous avez une meilleure façon de le faire alors s'il vous plaît laissez-moi savoir.
Ou si vous pouvez m'aider à mettre en œuvre ma solution, en particulier l'ouverture du fichier suivant dans le dossier, s'il vous plaît laissez-moi savoir!
opendir
fonction et le relatif.OriginalL'auteur Django Johnson | 2013-06-06
Vous devez vous connecter pour publier un commentaire.
OrangePill la réponse est FAUSSE.
Elle renvoie un fichier vide et une ERREUR de compilation.
Le problème est qu'il a utilisé fread (lit octets) au lieu de fget (lit les lignes)
C'est le travail de réponse:
Profitez-en!
OriginalL'auteur Rod
La façon que vous le faites, il va consommer beaucoup de mémoire, car il doit tenir le contenu de tous les fichiers dans la mémoire ... cette approche peut être un peu mieux
Tout d'abord obtenir tous les fichiers que vous allez vouloir
Puis d'ouvrir un fichier de sortie de la poignée
Ensuite parcourir les fichiers en lecture et en écriture.
Puis nettoyer
si vous êtes sur une machine unix/linux après l'exécution de la ci-dessus vous pourriez courir à travers
exec("sort newfile.txt | uniq > newfile.sorted.txt'");
Ah, d'accord. Je vais exécuter cette commande. Je vous remercie.
J'ai juste essayé le script et c'est de l'écriture d'un fichier texte vide. Rien n'est dans le fichier texte. Voici le code dans mon index.php fichier:
<?php $files = glob("/*.*"); $out = fopen("listTogether.txt", "w"); foreach($files as $file){ $in = fopen($file, "r"); while($line = fread($in)){ fwrite($out, $line); } fclose($in); } fclose($out); ?>
le
/*.*
doit correspondre à un masque de fichier lisible par le serveur web. Je suis sûr que le système de fichiers root ne l'est pas. Si vous voulez lire les fichiers se terminant par .txt dans le répertoire courant, puis vous passerez dans./*.txt
OriginalL'auteur Orangepill
Essayez ceci:
OriginalL'auteur Attgun
Essayer de code ci-dessous et profitez-en!!!
OriginalL'auteur Ariful Islam Rajib