Ma question relève plus de l'expression rationnelle que de PHP, mais
comme c'est souvent lié, je poste ici. N'hésitez pas à me dire si ce
message aurait une meilleure place ailleurs.
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.";
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Fser
Je n'ai pas le temps de trop detailler, mais si tu ne veux que des liens cliquables, je te conseil ce site : http://www.siteduzero.com/php/regex2.php#capture
Je n'ai pas le temps de trop detailler, mais si tu ne veux que des liens
cliquables, je te conseil ce site :
http://www.siteduzero.com/php/regex2.php#capture
Je n'ai pas le temps de trop detailler, mais si tu ne veux que des liens cliquables, je te conseil ce site : http://www.siteduzero.com/php/regex2.php#capture