TUTORIELS 

Cas pratique : un moteur de recherche en Php.
Première partie: Exemple d'indexation de contenu (2/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

Le script d'indexation

Nos tests sont effectués sous Windows avec EasyPhp. Par défaut le temps maximal alloué à l'exécution d'un script est de 30 secondes (vérifiez avec un "phpinfo()"). Dans l'état actuel de notre script (non optimisé pour l'instant) cela peut s'avérer insuffisant, même en local donc.
Ne parlons pas des hébergeurs mutualisés où ce type de script risque d'être mal vu.

Ce "moteur" n'est pas prévu pour indexer en ligne le contenu d'un site. Il faudra passer par une phase intermédiaire, en local. Cette étape aboutira à la création (ou la mise à jour) de la table "moteur".

La première étape est donc d'augmenter ce temps maximal d'exécution :

set_time_limit(300);

Il nous faut ensuite récupérer le contenu du fichier sous une forme où nous pourrons lui appliquer quelques-unes des nombreuses fonctions dédiées à la gestion des chaînes de caractères.

$contenu = join('', file("chaines_python.html"));

"chaines_python.html" est le fichier source de notre tutoriel.
La fonction "file" est l'équivalent de "readfile" à ceci près qu'elle renvoie le contenu du fichier ligne par ligne, dans un tableau. Démonstration avec les premières lignes de notre fichier HTML :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Manipuler les cha&icirc;nes de caract&egrave;res en Python</title>
</head>
<body>
<p>Notre tutoriel pr&eacute;c&eacute;dent sur le Python &eacute;tait
<a href="http://www.journaldunet.com/developpeur/tutoriel/pyt/011211pyt_intro.shtml">une

Si nous avions uniquement le code suivant :

$contenu = file("chaines_python.html");
for ($i=0;$i<=7;$i++)
     echo("ligne[$i] : $contenu[$i]");

... Nous aurions obtenu le code source HTML suivant...

ligne[0] : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
ligne[1] : <html>
ligne[2] : <head>
ligne[3] : <title>Manipuler les cha&icirc;nes de caract&egrave;res en Python</title>
ligne[4] : </head>
ligne[5] : <body>
ligne[6] : <p>Notre tutoriel pr&eacute;c&eacute;dent sur le Python &eacute;tait
ligne[7] : <a href="http://www.journaldunet.com/developpeur/tutoriel/pyt/011211pyt_intro.shtml">une


... Illustrant ainsi la propriété de la fonction "file()".

Or nous avons besoin de transformer tout ceci en chaînes de caractères afin d'utiliser d'autres fonctions Php, ce sera le rôle de la fonction "join()", capable de fusionner une chaîne de caractères (vide ici) et un tableau ("contenu").

Nous obtenons alors une chaîne de caractères semblable à notre fichier HTML.

Pages 1 | 2 | 3 | 4

 
[ Arnaud GadalJDNet
 
Accueil | Haut de page