Question

Comment rechercher du texte dans des fichiers tels que PDF, doc, docs ou txt en utilisant PHP? Je veux faire la même fonction que recherche de texte intégral dans MySQL, mais cette fois, je recherche directement dans les fichiers, et non pas la base de données.

La recherche va faire la recherche dans de nombreux fichiers situés dans un dossier. Toute suggestion, des conseils ou des solutions à ce problème?

J'ai aussi remarqué que, google aussi faire une recherche dans les fichiers.

Était-ce utile?

La solution

Pour la recherche PDF, vous aurez besoin est un programme comme pdftotext, qui convertit le contenu d'un PDF en texte. Pour les documents Word un thingy Simular pourrait être disponible (à cause de tout le style et le cryptage des fichiers Word).

Un exemple de recherche par le biais de PDF (copié à partir d'un de mes scripts (c'est un extrait, pas tout le code, mais il devrait vous donner une certaine compréhension) où j'extraire des mots-clés et les matches de magasin dans un tableau PDF résultats.) :

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]));
        }
    }
}

Autres conseils

En fonction du type de fichier, vous devez convertir le fichier texte et la recherche à travers l'aide à savoir 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

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é à partir de PHP en utilisant exec résultant en

cmd = 'grep -R "text to be searched for" ./';
$result = exec(grep);
print_r(result);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top