Module de recherche interne sans bdd

Fermé
camel - 28 oct. 2014 à 13:41
 camel - 2 nov. 2014 à 00:10
Bonjour,

je viens de trouver un module de recherche en php sans bdd, alors j'ai créer une page et j'ai mis le code (ci-dessous) afin de le tester malheureusement ça me renvoie une erreur que j'ai pas compris.Si quelqu'un peut m'aider svp
<?php
// Tout début du code PHP. Situé en haut de la page web
ini_set("display_errors",0);error_reporting(0);
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Recherche</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design_recherche.css" />
</head>
<body>
<?php
/*------------------------------------------------------------*/
/*---------- Shooter's Search Engine v1.2 ----------*/
/*------------------------------------------------------------*/

/* Configuration */
// indique où le moteur de recherche doit rechercher
// './' correspond au dossier où se trouve la page
// '../' correspond au dossier contenant le dossier où se trouve la page
// '/' correspond au dossier de la racine de votre site web
$dossierDeLaRecherche = './';

// indique si le moteur de recherche doit rechercher DANS LE CODE SOURCE DES PAGES
// true pour rechercher dans le code source
// false pour ne pas rechercher dans le code source
$rechercherDansLeCodeSource = true;

// indique si le moteur de recherche doit rechercher DANS LES SOUS DOSSIERS
// true pour rechercher dans les sous dossiers
// false pour ne pas rechercher dans les sous dossiers (La recherche se limitera alors au dossier de la recherche)
define('RechercherDansLesSousDossiers', true);

// indique les pages que le moteur de recherche doit ignorer
// remplacez la ligne 33 par $exclure = array(); pour n'exclure aucune page
$exclure = array('recherche.php', 'resultats_recherche.php', 'design_recherche.css');

// indique les dossiers que le moteur de recherche doit ignorer
// remplacez la ligne 36 par $exclureDossier = array(); pour n'exclure aucun dossier
$exclureDossier = array();

//Ici j'essaye d'exclure les extensions non souhaitées
$exclurextensions = array("js","css","jpg","png");

function scanner($path)
{
if($dir = opendir($path))
{
$fichiers = array();
$i = 0;
while(false !== ($file = readdir($dir)))
{
if($file != "." && $file != "..")
{
if(!is_dir($file))
{
$fichiers[$i] = preg_replace('#.#', '$0', $file);
$i++;
}
else
{
if(RechercherDansLesSousDossiers)
{
$sous_dossier = scanner($file);

$j = 0;
while($j < count($sous_dossier))
{
array_unshift($fichiers, $file . '/' . preg_replace('#.#', '$0', $sous_dossier[$j]));
$j++;
}
$i++;
}
}
}
}
closedir($dir);
}
return $fichiers;
}

function exclureDossier($recherche, $arrayExclure)
{
$recherche = explode('/', $recherche);
$i = 0;
while($i < count($recherche) - 1)
{
if(in_array($recherche[$i], $arrayExclure))
return true;
else
return false;
$i++;
}
}

if(isset($_POST['recherche']) AND !empty($_POST['recherche']))
{
$recherche = strip_tags($_POST['recherche']);
$fichiers = scanner($dossierDeLaRecherche);

/* chronomètre */
$debut = microtime();

/* si on a choisi tous les mots */
if($_POST['mode'] == 'AND')
{
/* tableau contenant les fichiers qui contiennent la recherche */
$resutats_recherche = array();

/* on écrit la mise en forme */
echo '<h1>Résultats de la recherche "<span class="italique">' . $recherche . '</span>" :</h1><hr /><p>';

$i = 0;
while($i < count($fichiers))
{
/* On ouvre le fichier */
if($rechercherDansLeCodeSource)
$fichier_courant = file_get_contents($fichiers[$i]);
else
$fichier_courant = strip_tags(file_get_contents($fichiers[$i]));

$cherche = '#' . $recherche . '{1,}#is';
if(preg_match($cherche, $fichier_courant))
{
//on affiche UNIQUEMENT les résultats conformes (qui ne sont pas dans les pages interdites)
if(!exclureDossier($fichiers[$i], $exclureDossier) AND !in_array($fichiers[$i], $exclure) AND !in_array($fichiers[$i], $exclurextensions)) //C'est sur cette ligne là que j'essaye de rajouter ma variable d'exclusion des extensions
{
echo '<a href="' . $fichiers[$i] . '">' . $fichiers[$i] . '</a><br />';
$resutats_recherche[$i] = $fichiers[$i];
}
}
$i++;
}

/* Si il n'y a aucun résultat à afficher */
if(count($resutats_recherche) == 0)
echo 'La recherche n\'a retournée aucun résultat.';
elseif(count($resutats_recherche) == 1)
echo '</p><hr /><p>' . count($resutats_recherche) . ' page trouvée en ' . round(microtime() - $debut, 9) . ' secondes<br />';
else
echo '</p><hr /><p>' . count($resutats_recherche) . ' pages trouvées en ' . round(microtime() - $debut, 9) . ' secondes<br />';
}

/* si on a choisi au moins un mot */
if($_POST['mode'] == 'OR')
{
/* tableau contenant les fichiers qui contiennent la recherche */
$resutats_recherche = array();

/* on écrit la mise en forme */
echo '<h1>Résultats de la recherche "<span class="italique">' . $recherche . '</span>" :</h1><hr /><p>';

$recherche = explode(' ', $recherche);
$j = 0;
$lien = array();
while($j < count($recherche))
{
$lien[$j] = array();
$i = 0;
while($i < count($fichiers))
{
/* On ouvre le fichier */
if($rechercherDansLeCodeSource)
$fichier_courant = file_get_contents($fichiers[$i]);
else
$fichier_courant = strip_tags(file_get_contents($fichiers[$i]));

$cherche = '#' . $recherche[$j] . '{1,}#is';
if(preg_match($cherche, $fichier_courant))
{
//on affiche UNIQUEMENT les résultats conformes (qui ne sont pas dans les pages interdites)
if(!exclureDossier($fichiers[$i], $exclureDossier) AND !in_array($fichiers[$i], $exclure) AND !in_array($fichiers[$i], $exclurextensions))//Ainsi que sur celle-ci
{
$lien[$j][$i] = '<a href="' . $fichiers[$i] . '">' . $fichiers[$i] . '</a><br />';
$resutats_recherche[$i] = $fichiers[$i];
}
}
$i++;
}
/* on affiche les résultats sous forme de catégories */
if(!in_array($fichiers[$i], $exclure) AND !in_array($fichiers[$i], $exclurextensions)) //Et enfin celle-ci
{
echo '<span class="souligne">Résultats pour "<span class="italique">' . $recherche[$j] . '</span>" :</span><br />';
foreach($lien[$j] as $sous_lien)
{
echo $sous_lien;
}
}
$j++;
/* Si il n'y a aucun résultat à afficher */
if(count($resutats_recherche) == 0)
echo 'La recherche n\'a retournée aucun résultat.<br/>';
}
if(count($resutats_recherche) == 0)
{}
elseif(count($resutats_recherche) == 1)
echo '</p><hr /><p>' . count($resutats_recherche) . ' page trouvée en ' . round(microtime() - $debut, 9) . ' secondes<br />';
else
echo '</p><hr /><p>' . count($resutats_recherche) . ' pages trouvées en ' . round(microtime() - $debut, 9) . ' secondes<br />';
}
}//fin du grand if

// Si on ne vient pas de la page de recherche, on y va !
else
{
header('Status: 200 OK');
header('Location: recherche.php');
}
?>
</p>
</body>
</html>


Erreur:
Fatal error: Maximum function nesting level of '100' reached, aborting! in C:\wamp\www\voiture\resultats_recherche.php on line 41


1 réponse

bonsoir, svp quelqu'un peut m'aider
0