2010-10-01 15 views
2

Comment rechercher du texte dans certains fichiers comme PDF, doc, docs ou txt en utilisant PHP? Je veux faire une fonction similaire à la recherche en texte intégral dans MySQL, mais cette fois-ci, je suis directement la recherche dans les fichiers, pas de base de données.Recherche de texte dans des fichiers utilisant PHP

La recherche fera la recherche dans plusieurs fichiers situés dans un dossier. Des suggestions, des conseils ou des solutions pour ce problème?

J'ai aussi remarqué que google fait aussi des recherches dans les fichiers.

+0

Avez-vous pensé à nous Quelque chose comme Lucene, Solr ou Sphinx? – Gordon

+0

Merci de donner ces conseils. Je vais étudier à leur sujet. Peut-être qu'ils sont utiles pour moi. –

Répondre

4

Pour vous de la recherche PDF aurez besoin d'un programme comme pdftotext, qui convertit le contenu d'un pdf au texte. Pour les documents Word, un objet simulé pourrait être disponible (à cause de tout le style et le cryptage dans les fichiers Word).

Un exemple de recherche dans les PDF (copié à partir d'un de mes scripts (un extrait, pas tout le code, mais qui devrait vous aider à comprendre) où j'extrais les mots clés et les correspondances dans un tableau de résultats PDF.):

foreach($keywords as $keyword) 
{ 
    $keyword = strtolower($keyword); 
    $file = ABSOLUTE_PATH_SITE."_uploaded/files/Transcripties/".$pdfFiles[$i]; 

    $content = addslashes(shell_exec('/usr/bin/pdftotext \''.$file.'\' -')); 
    $result  = substr_count(strtolower($content), $keyword); 

    if($result > 0) 
    { 
     if(!in_array($pdfFiles[$i], $matchesOnPDF)) 
     { 
      array_push($matchesOnPDF, array(             
        "matches" => $result, 
        "type"  => "PDF", 
        "pdfFile" => $pdfFiles[$i])); 
     } 
    } 
} 
1

Si vous êtes sous un serveur Linux, vous pouvez utiliser

grep -R "text to be searched for" ./ // location is everything under the actual directory 

appelé de PHP en utilisant exec entraînant

cmd = 'grep -R "text to be searched for" ./'; 
$result = exec(grep); 
print_r(result); 
3

en fonction du type de fichier, vous devez convertir le fichier texte et recherche ensuite par l'aide-à-dire file_get_contents() et str_pos(). Pour convertir des fichiers au texte, vous avez - à côté d'autres - les outils suivants:

  • catdoc pour les fichiers de mots
  • xlhtml pour les fichiers Excel
  • ppthtml pour les fichiers powerpoint
  • unrtf pour les fichiers RTF
  • pdftotext pour les fichiers pdf
+0

Belle réponse, pourrait être utile un jour pour moi aussi;) Je connaissais seulement pdftotext (comme vous pouvez le voir dans ma réponse ..;)) +1 – Ben