Bonjour,
Je m'occupe d'un site internet gérant des articles postés par différents utilisateurs et enregistrés dans une base de données en HTML.
J'essaye de mettre au point quelque chose permettant la citation automatique des articles entre eux. Le but est donc de repérer, dans tous mes articles, si l'utilisateur a cité le nom d'un autre article et d'automatiquement transformer ça en lien.
Exemple : J'ai un article qui s'appelle "bidule", je veux donc que toutes les occurrences de "bidule" se transforme en <a href="bidule.php">bidule</a>.
Jusque là, pas de problème, je peux prendre un truc tout bête du genre
Code :
- $requete = mysql_query("SELECT * FROM remplacements" );
- while($rep = mysql_fetch_array($requete))
- {
- $contenu = preg_replace("#\\b(".$rep['rep_search']." )\\b#i", "<a href='article.php' >" . $rep['rep_replace'] . "</a>", $contenu);
- }
|
Maintenant, ce code ne va pas fonctionner pour plusieurs raisons :
- Vu que l'article est en html, ça n'empêche pas les utilisateurs d'écrire des trucs du genre <a href="bidule.php">un truc</a>, qui seront automatiquement remplacés par <a href="<a href="bidule.php">bidule</a>.php">un truc</a>...
- Si j'ai des des images dont le nom contient bidule, idem.
- Si j'ai des balises title avec bidule, idem.
- Etc.
Il me faudrait donc une REGEX qui prend tous les cas, sauf lorsque bidule est à l'intérieur d'une balise html quelconque, ou entre un <a></a>.
Je suis déjà allé sur plusieurs forum et je n'ai pas réussi à trouver de réponse, je désespère donc...
Merci d'avance,
7804j
Message édité par 7804j le 21-08-2011 à 21:52:13
---------------
7804j