Remplacer texte d'une page par lien via BDD

WRInaute occasionnel
Bonjour

J'aimerais ajouter sur mon site une fonctionnalité que je vois sur pas mal de site. A savoir ajouter automatiquement un lien vers une page sur des mots contenus dans ma base de données.
Exemple dès que le mot "Tomate" apparait dans le contenu d'un article, un lien se fait pour renvoyer vers une page que j'aurai précisée dans la BDD Mysql parlant de la tomate.
Je m'explique très mal mais je suis sur que vous aurez compris.

Je souhaite principalement m'en servir pour renvoyer vers mon glossaire pour expliquer les mots compliqués aux utilisateurs.

Pourriez vous m'expliquer comment ça marche, voire m'indiquer le code PHP que je dois mettre en place.

Merci d'avance
 
WRInaute occasionnel
Merci pour ton aide.

J'avais bien vu cette fonction en cherchant dans le guide php mais justement je doutais que ce soit la bonne. Car je n'arrivais pas à faire le lien avec la liste de mots dans la base de données
J'ai fait une base du style id, mot, adresse. J'arrive pas à insérer dans le str_replace la fonction permettant de voir si dans mon texte il y a un mot qui existe dans la base et si oui, le mettre dans le str_replace.

Je sais, je suis nul !
 
WRInaute accro
Code:
$sql = 'SELECT *
FROM `mots_base`';
$query = mysql_query($sql) or die(mysql_error());

while ($fetch = mysql_fetch_array($query)) {
$str = str_replace($fetch['mot'], '<a href="http://www.example.com/glossaire/'.$mot.'">'.$mot.'</a>', $str);
}

echo $str;
 
WRInaute accro
Le souci avec ce type de fonction est que
- si le mot tomate est stocké dans la base de données, et que le mot "tomates" est présent dans le texte, ca va faire un joli <a href="/glossaire/tomate.html">tomate</a>s
- si il y a dans la base de données le mot tomate rouge, il peut y avoir un double traitement dans le texte traité
- si le texte à traiter contient déjà des images, des liens, toute balise html, leur code peut être également traité par la requête: genre <img src="/images/tomate.jpg"/> deviendra <img src="/images/<a href="/glossaire/tomate.html">tomate</a>.jpg"/>.
 
WRInaute accro
Oui, avec aussi une hiérarchisation des requetes, pour pas que "tomate" ne soit traité si "tomate rouge" ne l'est.

Bon après si le texte à traiter n'est que du texte, sans balise html, ca peut se faire. Mais c'est plus complexe qu'il n'y paraît
 
Nouveau WRInaute
nickargall a dit:
Le souci avec ce type de fonction est que
- si le mot tomate est stocké dans la base de données, et que le mot "tomates" est présent dans le texte, ca va faire un joli <a href="/glossaire/tomate.html">tomate</a>s
- si il y a dans la base de données le mot tomate rouge, il peut y avoir un double traitement dans le texte traité
- si le texte à traiter contient déjà des images, des liens, toute balise html, leur code peut être également traité par la requête: genre <img src="/images/tomate.jpg"/> deviendra <img src="/images/<a href="/glossaire/tomate.html">tomate</a>.jpg"/>.

Je rencontre exactement ces problèmes si quelqu'un a un script utilisant les expressions régulières. Je suis preneur.
A+
 
Discussions similaires
Haut