Bonjour,

Dans un script PHP, j'aimerais remplacer les mots d'un texte par un lien vers leur définition. Le code basique ci-dessous marche, avec les défauts suivants : 1. Si le mot à remplacer est dans une balise <...>, il est remplacé alors qu'il ne devrait pas. 2. Si le mot à remplacer est déjà entre <a> et </a>, il est remplacé alors qu'il ne devrait pas.

Savez-vous comment faire pour corriger ces 2 problèmes ?

Merci !
Yann


<?php

$definitions["cactus"] = "Plante qui pique";
$definitions["chien"] = "Mammifère qui aboie";

function glossarisation($texte) {
        global $definitions;
        foreach ($definitions as $mot => $definition) {
if (eregi("([^a-zA-Zàéèêëïîôùü])$mot([^a-zA-Zàéèêëïîôùü])", " ".$texte." ")) { $texte = eregi_replace("([^a-zA-Zàéèêëïîôùü])($mot)([^a-zA-Zàéèêëïîôùü])", "\\1<a href=\"glossaire.php?mot=$mot\">\\2</a>\\3", " ".$texte." ");
                }
        }
        return $texte;
}

// Exemple qui marche
$texte1 = "La caravane passe devant les cactus, le chien aboie.";
echo glossarisation($texte1);

// Exemple qui ne marche pas, car le mot cactus dans le title de la balise <a> est remplacé $texte2 = "La <a href=\"http://example.com/\"; title=\"La caravane des cactus\">caravane</a> passe devant les cactus, le chien aboie.";

// Exemple qui ne marche pas, car le mot cactus est déjà entre <a> et </a> et ne doit pas être remplacé $texte3 = "La caravane passe devant les <a href=\"http://cactuspro.com\";>cactus</a>, le chien aboie.";

// Exemple sur le lequel il faudrait que ça passe
$texte4 = "La <a href=\"http://example.com/\"; title=\"La caravane des cactus\">caravane</a> passe devant les cactus, le chien aboie. Quand le chien partira, les <a href=\"http://cactuspro.com\";>cactus</a> seront toujours là.";
/* Résultat attendu :
La <a href="http://example.com/"; title="La caravane des cactus">caravane</a> passe devant les <a href="glossaire.php?mot=cactus">cactus</a>, le <a href="glossaire.php?mot=chien">chien</a> aboie. Quand le <a href="glossaire.php?mot=chien">chien</a> partira, les <a href="http://cactuspro.com";>cactus</a> seront toujours là.
*/
?>

--
___________________________________________________________________
     Yann Cochard, [EMAIL PROTECTED], http://yanncochard.com/
         Au Cactus Francophone : http://www.cactuspro.com/

Linux-Azur :      http://www.linux-azur.org
Désinscriptions: http://www.linux-azur.org/liste.php3
**** Pas de message au format HTML, SVP ****

Répondre à