begin process at 2012 05 30 23:07:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

Exclusion dossier lors d'une recherche


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Exclusion dossier lors d'une recherche

mardi 26 septembre 2006 à 15:16:32 | Exclusion dossier lors d'une recherche

flopad

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???

Merci d'avance!!
mardi 26 septembre 2006 à 16:04:06 | Re : Exclusion dossier lors d'une recherche

jean84

Donne nous le code source, sa pourrait etre un debut !

@+
mardi 26 septembre 2006 à 16:12:30 | Re : Exclusion dossier lors d'une recherche

flopad

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

$listeFormatsFichiers="htm,html,asp,aspx,php";

// ##################################################################################
?>


<html>
<head>
<title>Module d'indexation</title>
</head>
<body>

<?php

// ##################################################################################
// ****************************************************************************
//  Test de la valeurs $cheminRepertoire
//*****************************************************************************

// === Test de l'existence du répertoire ===

if(!is_dir($cheminRepertoire)) {
  print("Erreur ! <b>".basename($cheminRepertoire)."</b> 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 <b>$formatCourant</b> ne peuvent pas être indexés.<br> \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;

  $idRep=opendir($cheminRep);

  while($objet=readdir($idRep)) {

    $formatObjet=strstr($objet,".");
    $cheminObjet=$cheminRep."/".$objet;

    // === 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

for($compt=0;$compt<$nombreFormats;$compt++) {
  listeRecursiveFichiers($cheminRepertoire,$formatFichiers[$compt]);
}

$listeXFichiers=$tableauCorrespondances;

// Note : l'indice du tableau $listeXFichiers commence à 0

// *********************************************************************************
// Affichage de la liste des fichiers à indexer
// *********************************************************************************

print("<br>La liste des fichiers à indexer est la suivante :<br><br> \n");

$nombreFichiersAIndexer=count($listeXFichiers);

for ($compt=0;$compt<$nombreFichiersAIndexer;$compt++) {
  print($compt." / ".$listeXFichiers[$compt]."<br> \n");
}

print("<br> \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;

for($compt=0;$compt<count($listeXFichiers);$compt++) {

  $cheminFichierCandid=$listeXFichiers[$compt];
  if(!is_readable($cheminFichierCandid)) {
    continue;
  }
  $idFicCandid=fopen($cheminFichierCandid,"r");

  $titre="";
  $description="";
  $ligne="";
  $texte="";

  while(!feof($idFicCandid)) {

    // *********************************************************
    // ***** Traitement ligne à ligne du fichier à indexer *****
    // *********************************************************

    $ligne=fgets($idFicCandid,10000);

    // === suppression des espaces insecables ===

    $ligne=str_replace("&nbsp;"," ",$ligne);
    $ligne=str_replace("&NBSP;"," ",$ligne);

    // === 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) ===

  if($testTitre=eregi("<title>(.*)</title>",$texte,$corresTitre)) {
    $titre=$corresTitre[1];
  }

  else {
    $titre="Document sans titre";
  }

  // === Récupération de la description du document (si elle existe) ===
  // ===         et limitation du nombre de caractères à 150         ===

  $testMeta=eregi("name=\"description\"[ ]*content=\"([^\"]*)\"",$texte,$corresDescript);

  if($testMeta) {
    $description=$corresDescript[1];
    $description=substr($description,0,150);
  }

  // === Elimination des éventuelles portions de code correspondant à des scripts ===
  // = (ces portions ne sont pas très bien nettoyées par la fonction strip_tags) =

  $texte=eregi_replace("<script.+/script>","",$texte);

  // === Elimination des tags html ===

  $texte=strip_tags($texte);

  // === limitation du volume indexé à 8000 caractères ===

  $texte=substr($texte,0,8000);

  // === 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é ===

  if(!$testMeta) {
    $description=substr($texte,0,150);
  }

  // === Nettoyage du texte de description avec insertion de points de suspension ===


  if(strlen($description)>140) {
    if($testFin1=ereg("(.*)[ ][^ ]*$",$description,$corresFin1)) {
      $description=$corresFin1[1];
      if($testFin2=ereg("(.*)[,;:.]$",$description,$corresFin2)) {
        $description=$corresFin2[1];
      }
    $description=$description."...";
    }
    else {
      $description=$description."...";
    }
  }

  // === Ecriture dans le fichier 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é <br> \n");
}

fclose($idFicIndex);

//**********************************************************************************
// Vérification du résultat de l'indexation
//**********************************************************************************

$tabFicIndVerif=file("indexsite.dat");
$nlignesEffectivementIndexees=(count($tabFicIndVerif)-1)/4;

print("<br>\n");

if($nlignesEffectivementIndexees==$nombreFichiersAIndexer) {
  print("L'indexation des fichiers contenus dans le répertoire \"<b>$cheminRepertoire</b>\" a atteint son terme et s'est déroulée correctement. \n");
  print("Pour effectuer une première recherche, <a href=\"moteured.php\">cliquez ici</a>.\n");
}

else {
  print("L'indexation des fichiers contenus dans le répertoire \"<b>$cheminRepertoire</b>\" n'a pas atteint son terme.<br>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.");
}

// ##################################################################################
?>

</body>
</html>

mardi 26 septembre 2006 à 17:00:42 | Re : Exclusion dossier lors d'une recherche

jean84

// *********************************************************************************
// 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

for($compt=0;$compt<$nombreFormats;$compt++) {
  listeRecursiveFichiers($cheminRepertoire,$formatFichiers[$compt]);
}

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

@+
mercredi 27 septembre 2006 à 09:05:10 | Re : Exclusion dossier lors d'une recherche

flopad

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...? :

$exclu=array(

"../TOTO",
)

Merci!!

mercredi 27 septembre 2006 à 14:09:42 | Re : Exclusion dossier lors d'une recherche

flopad

Please, je rame trop là, qq'un peut m'aider...????

 

Merci!!

mercredi 27 septembre 2006 à 14:38:32 | Re : Exclusion dossier lors d'une recherche

jean84

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 !

@+
mercredi 27 septembre 2006 à 14:54:45 | Re : Exclusion dossier lors d'une recherche

flopad

function listeRecursiveFichiers($cheminRep,$extension) {

  global $tableauCorrespondances;
  static $formatsTraites;

  $idRep=opendir($cheminRep);

  while($objet=readdir($idRep)) {

    $formatObjet=strstr($objet,".");
    $cheminObjet=$cheminRep."/".$objet;

    // === 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);
}

mercredi 27 septembre 2006 à 17:09:26 | Re : Exclusion dossier lors d'une recherche

jean84

Réponse acceptée !
lol tu vois j'avais raidon ^^

  // === Elimination des répertoires "." et ".." ===
    if($objet=="." or $objet=="..") {
      continue;
    }

Suffit de creer un tableau, d'y mettre le nom des repertoires que tu ne veux pas lister et de continuer la verif par un in_array() !

Exemple de code :
- mettons que tu ne veuille pas lister les repertoires data, admin et scripts

// Liste des dossiers a ne pas lister
$TableOfExeptions = array('data', 'admin', 'scripts');

// Voila le code modifier 
// === Elimination des répertoires "." et ".." ===
if ( ($objet == '.') or ($objet == '..') orin_array($objet,
$TableOfExeptions)   )
    continue;
   
Et la sa devrait fonctionner ^^ (note que j'ai un peu modifier la syntaxe, notement les accolades pas indispensables et les ' a la place des ")

Enjoy !

@+
vendredi 29 septembre 2006 à 14:52:41 | Re : Exclusion dossier lors d'une recherche

jean84

Alors ? Est-ce que ton probleme est regle ?? Si c'est le cas faut le signaler !

@+


Cette discussion est classée dans : dossier, recherche, exclusion


Répondre à ce message

Sujets en rapport avec ce message

recherche par mot dans fichier [ par justone72 ] Bonjour,J'ai besoin assez rapidemnt d'un script qui permet de faire une recherche dans un dossier (recherche de fichiers dans le dossier + sous dossie recherche de script [ par batistoss59 ] Bonjour, Savez-vous où je peux trouver un script de galerie photo tout simple avec dossier et sous dossier mais surtout qui permet de mettre une photo Recherche dossier [ par nounours21_6 ] Bonjour,voila j'ai un problème sur la recherche d'un dossier...en faite je voudrais rechercher un dossier en connaissant ses 3 premières lettressachan Recherche un script de création de dossier [ par manusoron ] Bonjour. Je recherche un script en PHP, qui est composé d'un champs et que lorse que qelq'un ecrit un nom, un dossier dans le FTP est imédiatement cré Probleme de recherche [ par chris tuckers ] Bonjour tout le monde, j'ai un problème tout bete mais la ca commence serieux à m'enerver, ca fait 2 jours que je suis dessus.J'ai une table incident. Recherche Programmeur PHP $$$ [ par Tipoil ] Bonjour je suis a la recherche d'un script ou un programmeur qui pourrait créer le script. Je voudrais un script qui permettrait d'administrer un egg Vérification dossier, problème [ par Satan2k ] Voila je fais un explorateur de dossier multi-utilisateurs en ligne mais voila j'ai un problème que je n'arrive pas à résoudre. Je veux faire en sort script Image du jour [ par mike501 ] Bonjour, j ai un petit souci avec mon code qui permet de mettre sur mon site une image qui change chaque jour mais le souci qui a ces que les image qu Recherche d'une source de ventes aux enchères [ par marsouin ] Salut à vous les CodyxiensIl y'a plusieurs mois je suis tombé par hasard sur deux sources (je ne sais même plus si je suis dans la bonne rubrique ! )


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales