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 ****