TUTORIELS 

Cas pratique : un moteur de recherche en Php.
Première partie: Exemple d'indexation de contenu (3/4)
Dans cette nouvelle série de tutoriels nous nous proposons d'explorer les principes de bases d'un "moteur de recherche". Notre méthode sera basique mais nous l'espérons pédagogique. Ce sera également l'occasion d'apprendre ou de réviser bon nombre de fonctions Php.  (19 janvier 2002)
 

Pages 1 | 2 | 3 | 4

La prochaine étape "nettoie" cette chaîne à l'aide des fonctions "strip_tags", "strtolower" et "htmlspecialchars". Celles-ci permettent respectivement d'éliminer les tags HTML et Php, de tout passer en minuscule, et de convertir les caractères spéciaux en code HTML :

$contenu = strip_tags($contenu);
$contenu = strtolower($contenu);
$contenu = htmlspecialchars($contenu, ENT_QUOTES);

L'utilisation du paramètre facultatif "ENT_QUOTES" dans la dernière fonction permet d'encoder à la fois les doubles (par défaut) et les simples quotes.

Grâce à la communauté Php, et plus particulièrement à Nexen.net sur cet exemple précis, nous allons réutiliser deux scripts qui vont nous permettre d'isoler les mots issus de notre chaîne de caractères :

(Fonction split_words)

function split_words($string)
{
     $retour = array();
     $delimiteurs = " .!?,:(){}[]%\/";
     $tok = strtok($string, " ");
     while (strlen(join(" ", $retour)) != strlen($string))
     {
          array_push($retour, $tok);
          $tok = strtok ($delimiteurs);
     }
     return array_non_empty($retour);
}

Notons certaines des fonctions Php utilisées ici :
- strtok : Découpe une chaîne de caractères selon les délimiteurs qui lui sont passés en paramètre.
- array_push : "Entasse" des éléments dans un tableau.

Cette première fonction retourne la chaîne passée en paramètre dans un tableau de mots en conservant l'ordre de la chaîne. Elle utilise une seconde fonction pour supprimer les entrées vides d'un tableau :

(Fonction array_non_empty)
function array_non_empty($array)
{
     $retour = array();
     foreach ($array as $a)
     {
          if ((!empty($a)) && (strlen($a) >= 3))
          {
               array_push($retour, trim($a));
          }
     }
     return $retour;
}


Nous avons rajouté dans cette fonction le test sur la longueur de l'élement, qui doit être au moins égal à trois caractères (nous ne souhaitons pas stocker des mots plus petits) ainsi que le "trim" afin de supprimer les espaces susceptibles d'entourer un mot (au début ou à la fin).
Notez l'utilisation de l'instruction "foreach".
Nous ne rentrons pas dans le détail de toutes les fonctions employées, elles sont bien documentées sur le site Php.net, une traduction en français est d'ailleurs disponible.

Pages 1 | 2 | 3 | 4

 
[ Arnaud GadalJDNet
 
Accueil | Haut de page