Moteur de recherche sur contenu dynamique

Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
-
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
-
saluté ...

j'ai regardé le scrip http://www.phpcs.com/codes/MOTEUR-RECHERCHE-INTERNE-SIMPLE_13119.aspx qui est très sympas ...

et je me demandais si il était possible de faire les recherches non pas
sur le code source de base d'une page php mais sur le résultat de ce
code source envoyé au navigateur une fois la page chargée ...

en gros ne pas prendre en compte les balises echo $mavar

mais la valeur de $mavar qui peut par exemple être chargée à partir d'une bdd ...

Un moteur de recherche basé sur le contenu réel quoi :)


enfin cette source est déjà très sympas :)

@+
A voir également:

3 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
26
Hello,

ben tu peux mettre le html généré dans une variable avec les fonction ob_* (bufferisation de sortie, dans php.net).
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
3
yes :)

merci ...ça à l'air d'être une bonne piste :)

je vais étudier ça :) :)

@+
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
3
re...

bon j'ai essayé d'implémenter une gestion de mise en cache des pages ) partir de ce script

mais je m'en sort pas vraiment ...


voila mon code


<?php

// cette page s'appelle ici moteur.php


// le dossier de départ pour la fontion récursive.

// le script scanne tous les sous-dossiers présents dans ce dossier et
effectue une fonction de recherche quelconque sur ou dans tous les
fichiers trouvés


// on recherche le mot...

if (isset($_GET['recherche']) && $_GET['recherche']!= "" ){

    $recherche = $_GET['recherche'];

} else {

    echo 'Vous n\'avez pas entré de mot pour la recherche';

    exit;

}// nom de la page où se trouve le script, histoire que le script ne tourne pas indéfiniment

$page_courante = "moteur.php";


// le dossier de départ pour la fonction récursive

// rien = dossier courant

$dossier_départ = "../";


//détermine si une chaine fait partie d'une autre

function is_substr($needle, $haystack){

    $pos = strpos($haystack, $needle);


    if ($pos === false) {

        return false;

    } else {

        return $pos;

    }

}function interdit($dossier){

    // tableau contenant les noms des dossiers interdits au listage

    $dossiers_interdits = array ('admin', 'conf', 'css',
'identification', 'images', 'functions', 'zoff','rechercher');

    $trouve = 0;   


    // on teste pour chaque valeur du tableau si le
dossier en cours en fait partie... si oui on renvoie incrémente trouve

    foreach ($dossiers_interdits as $value) {

        //echo 'key='.$value.'
';

        //echo 'dossier='.$dossier.'
';

       

        if(is_substr($value, $dossier)) {

            //    echo 'true
';

            $trouve ++;

            //    return true;

        }

        else {

            //    echo 'false
';

            //        return false;

        }

    }

    // si trouve est > 0 c'est que le dossier appartient à la liste interdite

    if ($trouve > 0){return true;} else {return false ;}

   

}


function dossier($dossier,$recherche,$page_courante) {


    $pointeur = opendir($dossier);


    readdir($pointeur);

    readdir($pointeur);


    while($contenu = readdir($pointeur)) {


        if(is_dir($dossier.$contenu)) {

            dossier($dossier.$contenu."/",$recherche,$page_courante);

        } else {


            /* COMMENTAIRE


ici on peut mettre une fonction de recherche

exemple :


if(ereg("\.php$",$contenu)) {

echo $dossier.$contenu."
";

}cet exemple affiche les fichiers dont l'extension est .php


ou on peut afficher tous les fichiers trouvés dans le dossier scanné :


echo $dossier.$contenu."
";


FIN COMMENTAIRE */


            // Fonction de
recherche retenue : on ouvre tous les fichiers sauf celui

            // qui contient ce script et si le mot $recherche

            // est présent
dedans, on affiche le nom du fichier et ensuite le mot recherché et les

            // 100 caractères qui suivent le mot dans le fichier

            // attention méthode lente et peu adaptée à un grand nombre de données

            //echo $dossier ;

            //echo '
';

           

           

           
if(ereg("\.php$",$contenu) && !interdit($dossier) &&
$dossier.$contenu != $page_courante) {

           

                ob_start();

                $texte = include ($dossier.$contenu);

                echo $texte;

            //hop on récupère ce qui suivait la fonction ob_start()

                $contenu_fichier = ob_get_contents();

           
    //$contenu_fichier =
join("",file($dossier.$contenu));


           
    // on supprime les balises html et php du fichier
s'il y en a,

                // pour ne pas chercher dedans

                // Vérifiez la syntaxe de vos pages !!!

               

               

                $contenu_fichier = @strip_tags($contenu_fichier);

               

           
    // pour ne pas afficher un fichier dans les
résultats de la recherche on insére ce code
<script>NPIND</script> en début de page

           
    // le code n'apparait pas mais le moteur de
recherche le vois et évite la page

                if(ereg("NPIND",$contenu_fichier,$sortie)) {

           
        //echo 'fichier évité '. $contenu;

                    break;

                }

               

           
    // TRES important, il faut terminer sa page ou en
tout cas inclure la fonction ob_end_clean() avant de faire echo
$content car le code PHP serait alors affiché lui aussi

                ob_end_clean();

               

           
   
if(ereg("$recherche(.{0,100})",$contenu_fichier,$sortie)) {

                    //echo $contenu_fichier;

           
        echo '';

           
        echo
$dossier.$contenu." ";

                   

           
        //echo ":
$recherche
".$sortie[1]

                    echo "

";

                   

                   

                }


               


            }

            // fin fonction de recherche


        }

    }


}


// lancement de la fonction de recherche

if(is_dir($dossier_départ)) {

    echo 'Résultats pour la recherche '.$recherche.'.

';

    dossier($dossier_départ,$recherche,$page_courante);

} else {

    echo "Indiquez un nom de dossier !!!";

}?>


...si vous avez une idée :) ça me sortirai bien du ****


merkii

@++