Il y a peut-être d'autres façons de le faire, mais je cherche une installation assez facile parce que c'est un processus unique.PHP readfile ou file_get_contents dans une boucle
J'ai 50 répertoires d'état avec une poignée de fichiers txt dans chacun.
Je veux entrer dans chaque répertoire, « lire » chaque fichier (puis effectuez un insert mysql de chaque fichier)
J'ai essayé quelques variations, mais chaque fois que j'essaie de boucle à travers et à l'utilisation readfile ou file_get_contents il se casse après le premier fichier et je n'arrive pas à ouvrir stream: des erreurs sur le reste de la liste.
J'ai cherché les pièges de l'utilisation de ces fonctions dans une boucle en s'attendant à de nombreuses raisons de ne pas le faire, mais sans obtenir de réponses.
merci est revenu pour ajouter un exemple de code - je vois qu'il ya une réponse listée donc je vais vérifier cela aussi. (rien de tout cela n'est à moi, j'ai simplement trouvé une fonction pour capturer la liste des fichiers)
function listFilesInDir($start_dir) { /* returns an array of files in $start_dir (not recursive) */ $files = array(); $dir = opendir($start_dir); while(($myfile = readdir($dir)) !== false) { if($myfile != '.' && $myfile != '..') { $files[] = $myfile; } } closedir($dir); return $files; } $dir = 'path/to/files'; $Docs = listFilesInDir($dir); foreach($Docs as $key => $fileName) { // HERE IS WHERE I TRIED THE file_get_contents $content = file_get_contents($fileName); //even doing an echo as a test would break it after the first file echo $content; //ultimately I would just do INSERT INTO here for mysql }
Merci! Cette solution a fait l'affaire. Aucune variation n'a été nécessaire autre que de brancher mon chemin ... et je vais ajouter mon code d'insertion. Je suppose, juste pour mes propres fins d'éducation, je vois que $ file-> getPathname()); était quelque chose que je devrais lire sur. –
DirectoryIterator est l'une des classes SPL utiles ajoutées en php5. la méthode 'getPathname' vous donne le chemin complet du système de fichiers vers le fichier ou le répertoire en question' getFilename' vous donne jsut le nom du fichier/dir et 'getPath' vous donnera juste le chemin vers le fichier/dir. Aussi, si vous avez utilisé cela comme solution, pouvez-vous le marquer comme la réponse - ou attendez-vous plus de détails techniques sur le fait que votre code ne fonctionne pas? – prodigitalson
Oui, je peux marquer ceci comme la réponse - assez nouveau au système de SO donc je n'étais pas sûr comment cela a fonctionné. (et désolé pour le retard dans mes réponses je ne recevais aucune notification d'activité par email) Si quelqu'un voulait ajouter des informations sur les raisons pour lesquelles l'autre méthode échouait, je trouverais cela utile mais je ne considérerais pas cela comme sans réponse. pour ça. merci encore, j'ai souvent besoin de ce type de réponses pour divers projets et je trouve Stack Overflow très utile. –