[spip-dev] Lexique

Bonjour,

  Comme j'avais besoin d'un lexique pour mon site, j'ai développé une paire de filtres et j'ai ajouté une table dans la base. Tout celà est bien sûr en dehors de SPIP et je n'ai pas développé de code pour entrer des termes dans le lexique, je le fais avec PHPMyAdmin. Quoiqu'il en soit, je vous livre l'idée, la programmation n'est pas très compliquée.

Dans le texte de l'article on encadre les mots supposés figurer dans le lexique par [" et "].

Le filtre lexi à utiliser pour l'article (#TEXTE) retire les [" "]
Le filtre lexi_liste à utiliser sur #TEXTE pour extraire les mots et leur définition généère la liste des termes cités dans le texte.

La table SQL a 4 champs : (id, mot, anglais, definition)

Voilà. Exemple du résultat ici (site encore en développement) : http://navi.modelisme.com/article.php3?id_article=65

Le code PHP des filtres :

   // lexi examine le texte pour y trouver des mots référencés
   // un mot référence est une chaine de caractère comprise entre [" et "]
   // lexi ne fait pas grand chose si ce n'est éliminer les [""]
   function lexi($texte) {
     while (eregi("\[\"([^\"]*)\"\]",$texte,$regs)) {
       $texte = str_replace($regs[0],$regs[1],$texte);
     }
     return $texte;
   }

   // lexi_liste construit la liste de terme à partir du texte
   function lexi_liste($texte) {
     $resultat = '<h3 class="lexi">Lexique</h3>';
     $lexique = array();
     while (eregi("\[\"([^\"]*)\"\]",$texte,$regs)) {
       $query = "SELECT * FROM nrc_lexique WHERE mot = \"$regs[1]\"";
       $result = spip_query($query);
       if ($row = spip_fetch_array($result)) {
         $lexique[$row['mot']] = $row;
       }
       $texte = str_replace($regs[0],$regs[1],$texte);
     }

     ksort($lexique);

     $resultat .= '<p class="lexi">';

     foreach($lexique as $mot) {
       $resultat .= '<b class="lexi">'.$mot['mot'].'</b> (<i class="lexi">'.$mot['anglais'].'</i>). '.$mot['definition'].'<br>';
     }

     $resultat .= '</p>';

     return $resultat;
   }

Hello Jean Luc,
Connais tu www.uzine.net/spip_contrib, le site qui recueille les contributions des spipeurs associés ?
C'est là que ta contribution trouvera sa place bien référencée
et accessible pour un maximum d'utilisateurs.
Cordialement,
JLuc aussi

Jean-Luc Béchennec wrote:

La démarche est intéressante, mais pourquoi n'as-tu pas utilisé les
mots-clés ? En créant un groupe de mots "lexique" et en attribuant les mots
en question aux articles, tu aurais eu une solution purement spipesque ?

  Comme j'avais besoin d'un lexique pour mon site, j'ai développé une
paire de filtres et j'ai ajouté une table dans la base. Tout celà est

-- Fil