Bir döngü içinde PHP readfile veya file_get_contents

1 Cevap php

Orada bunu yapmak için başka yollar olabilir ama temelde bir defalık bir süreç, çünkü ben bir oldukça kolay set-up arıyorum.

Ben her birinde txt dosyaları bir avuç 50 devlet dizinleri var.

Ben her dizine adım istiyorsanız, her dosyayı "okuma" (ve daha sonra her dosyanın bir mysql ekleme yapmak)

Birkaç varyasyonları denedim, ama ben döngü denemek ve readfile veya file_get_contents kullanmak her zaman ilk dosyadan sonra kırar ve ben başarısız akışı açık olsun: Listenin kalanı üzerinde hataları.

Ben neden değil birçok nedeni bekleyen bir döngü içinde bu fonksiyonları kullanarak tuzaklar aradı, ama cevap alamıyorum ettik.

thanks came back to add example code - I see there is an answer listed so I 'll check that out also. (none of this is mine, I simply found a function to capture the file list)


    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




        }

1 Cevap

Aşağıda bazı farklılıklar i kullanmak ne olduğunu. Sen ne yapıyorsun bağlı YMMV. Eğer kod sonrası eğer biz :-) yerine jsut alternatif çözümler sunan sizin özel uygulama ele alabilir

$dir = new DirectoryIterator('/path/to/states');
foreach($dir as $file)
{
  if(!$file->isDot() && $file->isFile() && strpos($file->getFilename(), '.txt') !== false)
  {
     $content = file_get_contents($file->getPathname());
     if($content)
     {
        // do your insert code
     }
  }
}