Bir klasörün içindeki tüm dosyaların kelime sayısını alma

4 Cevap php

Ben kelime bir klasörün içindeki tüm dosyalar için saymak bulmalıyız.

İşte ben bugüne kadar ile geldim kodu:

$f="../mts/sites/default/files/test.doc";

// count words
$numWords = str_word_count($str)/11;
echo "This file have ". $numWords . " words";

Bu, tek bir dosya içinde kelimeleri sayacaktır, nasıl belirli bir klasör içindeki tüm dosyalar için kelimeleri sayma hakkında gitmek istiyorsunuz?

4 Cevap

nasıl

$array = array( 'file1.txt', 'file2.txt', 'file3.txt' );
$result = array();
foreach($array as $f ){
 $result[$f] = str_word_count(file_get_contents($f));
}

ve dir kullanarak

if ($handle = opendir('/path/to/files')) {
    $result = array();
    echo "Directory handle: $handle\n";
    echo "Files:\n";

    /* This is the correct way to loop over the directory. */
    while (false !== ($file = readdir($handle))) {
       if($file == '.' || $file == '..')
           continue;
       $result[$file] = str_word_count(file_get_contents('/path/to/files/' . $file)); 
       echo "This file {$file} have {$result[$file]} words";
    }

    closedir($handle);
}

Lavanya, sen readdir, file_get_contents ait el danışabilirsiniz.

doc dosya şifresiz ve ek biçimlendirme içermeyen varsayarsak, dosyaların tüm kelimelerin tüm saymak için aşağıdaki komut dosyası kullanabilirsiniz:

<?php
$dirname = '/path/to/file/';
$files = glob($dirname.'*');
$total = 0;
foreach($files as $path) {
    $count = str_word_count(file_get_contents($path));
    print "\n$path has $count words\n";
    $total += $count;
}
print "Total words: $total\n\n";
?>

Eğer kullanıyorsanız * kullanabilirsiniz daha nux system('cat /tmp/* | wc -w')

Ancak bu kelime belgeler için çalışmaz, $words = str_word_count(file_get_contents($filepath)) bir text file kelimesi sayısını almak için kullanabilirsiniz. Sen. Doc dosya biçimi okuyabilir bir kütüphane veya harici programı bulmak gerekir.