flopad
Messages postés528Date d'inscriptionmercredi 28 septembre 2005StatutMembreDernière intervention 6 mars 2009
-
26 sept. 2006 à 15:16
cs_jean84
Messages postés449Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention 5 mars 2009
-
29 sept. 2006 à 14:52
Bonjour, je suis en train de réutiliser un script de moteur de recherche, par contre, si je le laisse comme il est, il indexe tout le site, or je voudrais exclure des répertoires...Comment je peux faire ça???
flopad
Messages postés528Date d'inscriptionmercredi 28 septembre 2005StatutMembreDernière intervention 6 mars 2009 26 sept. 2006 à 16:12
Désolé....
Voici :
<?php
// ##################################################################################
// **********************************************************************************
// Paramètres de configuration du module d'indexation : nom du répertoire principal
// à parcourir (rappelons que ses sous-répertoires sont parcourus de façon automatique)
// et extension des fichiers à indexer.
// **********************************************************************************
// = == Localisation du répertoire principal à indexer ===
// Note : le nom du répertoire ne doit pas être refermé par un slash
// Entrez la valeur "." pour le répertoire courant, ".." pour le répertoire parent
$cheminRepertoire="..";
// Renseignement sur les types de fichiers à indexer // Note : Entrez ici les différents formats de fichiers à indexer, séparés par une virgule
// Rappel : les seuls formats acceptés pour l'instant sont htm, html et txt
// ##################################################################################
// ****************************************************************************
// Test de la valeurs $cheminRepertoire
//*****************************************************************************
// Test de l'existence du répertoire
if(!is_dir($cheminRepertoire)) {
print("Erreur ! ".basename($cheminRepertoire)." n'est pas un répertoire.");
exit;
}
// ****************************************************************************
// Création du tableau $formatFichiers (stockant les valeurs des formats de
// fichiers à indexer)
//*****************************************************************************
// == === Définition de la liste des formats "interdits" (c.à.d. qui ne seront en aucun cas indexés) =====
// Note : les extensions doivent être séparées par un espace
$formatsInterdits=" php3 php4 ";
// Stockage des valeurs correspondant aux formats à indexer dans le tableau $formatFichiers[] // Note : l'indice de ce tableau démarre à 0
$formatCourant=strtok($listeFormatsFichiers,",");
do {
if(eregi(" ".$formatCourant." ",$formatsInterdits)) {
print("Rappel : les fichiers de format $formatCourant ne peuvent pas être indexés.
\n");
$formatCourant =strtok(",");
continue;
}
else {
$formatFichiers[]=".".$formatCourant;
$formatCourant=strtok(",");
continue;
}
} while($formatCourant);
// *********************************************************************************
// Définition de la fonction "listeFichiers", qui stocke dans le tableau
// $tableauCorrespondances les chemins des fichiers trouvés dans le répertoire
// "$cheminRep" et ses sous-répertoires
// *********************************************************************************
function listeRecursiveFichiers($cheminRep,$extension) {
global $tableauCorrespondances;
static $formatsTraites;
// Elimination des répertoires "." et ".." if($objet=="." or $objet=="..") {
continue;
}
// Stockage des objets correspondants dans le tableau "$tableauCorrespondances" if($formatObjet==$extension) {
$tableauCorrespondances[]=$cheminObjet;
}
// Application de la fonction aux sous-répertoires if(is_dir($cheminObjet)) {
listeRecursiveFichiers($cheminObjet,$extension);
}
}
closedir($idRep);
}
// *********************************************************************************
// Récupération de la liste des fichiers à indexer, par application de la
// fonction "listefichiers" pour chaque format spécifié par l'utilisateur.
// L'ensemble des fichiers à indexer, tous formats confondus, est stocké dans
// le tableau $listeXFichiers.
// *********************************************************************************
$nombreFormats=count($formatFichiers); // nombre de formats de fichiers à indexer
// Note : l'indice du tableau $listeXFichiers commence à 0
// *********************************************************************************
// Affichage de la liste des fichiers à indexer
// *********************************************************************************
print("
La liste des fichiers à indexer est la suivante :
\n");
$nombreFichiersAIndexer=count($listeXFichiers);
for ($compt=0;$compt<$nombreFichiersAIndexer;$compt++) {
print($compt." / ".$listeXFichiers[$compt]."
\n");
}
print("
\n");
// ****************************************************************************
// Création du fichier indexsite.dat et enregistrement de différentes valeurs :
// - chemin du fichier indexé
// - titre du document (s'il existe)
// - description du document (à défaut les 150 premiers caractères)
// - texte du document
// ****************************************************************************
$idFicIndex=fopen("indexsite.dat","w+");
// Ecriture d'un message d'avertissement sur la première ligne
fputs($idFicIndex,"Fichier Index. Ne pas éditer ! \n");
// Indexation des différents fichiers stockés dans le tableau $listeXFichiers;
// *********************************************************
// ***** Traitement ligne à ligne du fichier à indexer *****
// *********************************************************
// suppression des espaces superflus (début et fin de chaine)
$ligne=trim($ligne);
// ajout d'un espace à la fin de certaines ligne // === (contenant effectivement du texte à indexer) ===
if (ereg("^[^<>]+$",$ligne)
or ereg(">[^<>]+<",$ligne)
or ereg(">[^<>]+$",$ligne)
or ereg("^[^<>]+<",$ligne)
) {
$ligne=$ligne." ";
}
// **************************************************************** // intégration de la nouvelle ligne dans le texte à indexer // ****************************************************************
$texte=$texte.$ligne;
}
fclose($idFicCandid);
// ***********************************************************************
// ****** Récupération et traitement du texte stocké précédemment ******
// ** Note : l'ensemble des données est stocké dans la variable $texte ***
// ***********************************************************************
// Elimination des antislashes éventuels
$texte=stripslashes($texte);
// Récupération du titre du document (s'il existe)
// Elimination des éventuelles portions de code correspondant à des scripts // (ces portions ne sont pas très bien nettoyées par la fonction strip_tags)
// === Cas de figure où la description du document n'a pas pu être récupérée
// dans le metatag : par défaut, la description reprend les 150 premiers
// caractères du texte indexé ===
fputs($idFicIndex,$cheminFichierCandid."\n"); // écriture du chemin du fichier (ligne N)
fputs($idFicIndex,$titre."\n"); // écriture du titre (ligne N+1)
fputs($idFicIndex,$description."\n"); // écriture de la description (ligne N+2)
fputs($idFicIndex,$texte."\n"); // écriture du texte à indexer (ligne N+3)
// Affichage d'un message de confirmation
print("$compt / Le fichier $cheminFichierCandid a bien été indexé
\n");
}
fclose($idFicIndex);
//**********************************************************************************
// Vérification du résultat de l'indexation
//**********************************************************************************
if($nlignesEffectivementIndexees==$nombreFichiersAIndexer) {
print("L'indexation des fichiers contenus dans le répertoire "$cheminRepertoire" a atteint son terme et s'est déroulée correctement. \n");
print("Pour effectuer une première recherche, cliquez ici.\n");
}
else {
print("L'indexation des fichiers contenus dans le répertoire "$cheminRepertoire" n'a pas atteint son terme.
Ce problème est peut-être dû au nombre relativement important de fichiers à indexer. Afin de tous les englober dans le fichier indexsite.dat, vous devez recommencer l'opération d'indexation en ayant préalablement augmenté (si vous en avez la possibilité) la durée maximum d'exécution des scripts PHP, dans le fichier php.ini.");
}
cs_jean84
Messages postés449Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention 5 mars 2009 26 sept. 2006 à 17:00
// *********************************************************************************
// Récupération de la liste des fichiers à indexer, par application de la
// fonction "listefichiers" pour chaque format spécifié par l'utilisateur.
// L'ensemble des fichiers à indexer, tous formats confondus, est stocké dans
// le tableau $listeXFichiers.
// *********************************************************************************
$nombreFormats=count($formatFichiers); // nombre de formats de fichiers à indexer
Sa me parait l'endroit ideal a modifier pour ne lister que les repertoires voulus. Trouve l'implementation de la fonction listeRecursiveFichiers() et modifie "a la main" son fonctionnement (c'est a dire pile poil adapte a ton site). Essaye de nous transmettre cette fonction pour que l'on puisse travailler dessus ;-)
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
flopad
Messages postés528Date d'inscriptionmercredi 28 septembre 2005StatutMembreDernière intervention 6 mars 2009 27 sept. 2006 à 09:05
Salut,
je ne vois pas exactement quoi faire...
Est ce que je peux pas faire un truc du genre; si oui, comment je peux utiliser cette variable en condition...? :
cs_jean84
Messages postés449Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention 5 mars 2009 27 sept. 2006 à 14:38
Justement ! Si tu trouves la fonction que je t'ai indique, on pourra ecrire un code capacble de resoudre ton probleme. Sans sa, c'est pas le peine de dire que t'as besion d'aide, personne ne pourra rien ...
Sa ne sera jamais que des supositions !
// Elimination des répertoires "." et ".." if($objet=="." or $objet=="..") {
continue;
}
// Stockage des objets correspondants dans le tableau "$tableauCorrespondances" if($formatObjet==$extension) {
$tableauCorrespondances[]=$cheminObjet;
}
// Application de la fonction aux sous-répertoires if(is_dir($cheminObjet)) {
listeRecursiveFichiers($cheminObjet,$extension);
}
}
closedir($idRep);
}