2009-11-20 5 views
0

Je dois trouver le nombre de mots pour tous les fichiers d'un dossier.Nombre de mots pour tous les fichiers d'un dossier

Voici le code que je suis venu avec jusqu'à présent:

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

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

Cela comptera les mots dans un seul fichier, comment pourrais-je aller sur le comptage des mots pour tous les fichiers dans un dossier donné?

+0

@jakemcgraw: merci pour le rééditer. – RageZ

+3

0% et pas de rejets? De toute évidence, vous vous en fichez, pourquoi devrions-nous? –

+0

@Mike: le problème, il est loin d'être seul pour faire ça! – RageZ

Répondre

3

que diriez-vous

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

et en utilisant la dir

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, vous pouvez consulter le manuel de readdir, file_get_contents.

+2

Cela ne va pas fonctionner pour les fichiers .doc ... – Rob

+0

@Rob: c'est une bonne remarque mais il n'a pas dit que c'était un fichier de mots ... laissons son commentaire. – RageZ

+0

Hmm vous avez raison, je suppose que j'ai vu les mots "mot" et "doc" dans son message et mon cerveau les a mis ensemble ... – Rob

2

En supposant que le fichiers doc sont plaintext et ne contiennent pas de balises supplémentaires, vous pouvez utiliser le script suivant pour compter tous les mots dans tous les fichiers:

<?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"; 
?> 
0

Vous pouvez utiliser $words = str_word_count(file_get_contents($filepath)) à obtenir le nombre de mots d'un fichier texte , mais cela ne fonctionnera pas pour les documents Word. Vous aurez besoin de trouver une bibliothèque ou un programme externe capable de lire le format de fichier .doc.

1

Si vous utilisez * nux que vous pouvez utiliser system('cat /tmp/* | wc -w')