• 07-10-2007, 17:54:21
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    arkadaşlar bir klasördeki txt dosyalarını nasıl rastgele seçebilirm?
    mesela bir klasörde binlerce txt dosyası var bunlardan 50 tanesini rastgele seçip dosyaların isimlerini yazdıracağım.
    Yardımcı olursanız sevinirim.
  • 07-10-2007, 18:37:04
    #2
    <?PHP
    if ($dir = opendir('/home/user/www/klasor')) {
    while (false !== ($dosyalar = readdir($dir))) {
    $array[] = $dosyalar;
    }
    }
    $adet = count($array);
    for($i=1;$i<=50;$i++)
    {
    $sec = rand(1,$adet);
    echo "$array[$sec]";
    }
    ?>

    Arkadaşlar böyle birşey yaptım ama dosya isimleri x.txt, y.txt diye çıkıyor.Acaba .txt yi dosya isminden nasıl silebiliriz.
  • 07-10-2007, 18:37:06
    #3
    Üyeliği durduruldu
    <?
    $path = "/dizinadresin";
    $dir_handle = @opendir($path) or die("$path dizini açılamadı");
    echo "$path dizinin listesi<br/>";
    $i=0;
    while ($file = readdir($dir_handle)) 
    {
    $dosyalar[$i]=$file;
    $i++;
    }
    $kacdosya=count($dosyalar);
    srand ((double)microtime()*1000000) ;
    for($i=0;$i<=49;$i++) { 
    print $dosyalar[(rand(0,$kacdosya))].'<br/>';
    }
    closedir($dir_handle);
    ?>
  • 07-10-2007, 18:39:01
    #4
    aynı anda attık mesajı

    inceleyeyim kodunu.çok teşekkürler.
  • 07-10-2007, 18:42:19
    #5
    Üyeliği durduruldu
    senin kodda $sec = rand(1,$adet); aynı dosyaların defalarca gelme ihtimali çok fazla(srand), ayrıca dizi 0 dan başlıyor ama sen 1 den almışsın birinci sıradaki dosyayı yuttun
  • 07-10-2007, 18:43:37
    #6
    selim61 adlı üyeden alıntı: mesajı görüntüle
    senin kodda $sec = rand(1,$adet); aynı dosyaların defalarca gelme ihtimali çok fazla, ayrıca dizi 0 dan başlıyor ama sen 1 den almışsın birinci sıradaki dosyayı yuttun
    haklısın çok teşekkürler.

    Dosya isimleri x.txt, y.txt diye çıkıyor.Acaba .txt yi dosya isminden nasıl silebilirim?
  • 07-10-2007, 18:47:11
    #7
    Üyeliği durduruldu
    preg_match("/(\.txt|\.text)$/", $file) işe yarıyabilir.
  • 07-10-2007, 19:01:48
    #8
    tekrar teşekkürler