Hello,
J'ai un petit soucis depuis quelques temps....
En effet, je désire faire un regex pour placer un lien sur un mot clé (que je récupère via une requête sql). Jusque là pas de soucis.
Mon problème, c'est que certains de mes mots clés font déjà partie d'un lien... ce qui me fait donc un code html invalide.
Mon but est donc de rechercher mon mot clé par rapport à une liste (ça ok), puis de vérifier que ce mot clé ne comporte pas de balise <a devant lui (immédiatement ou pas) sans balise fermante, ni qu'il n'y a pas de balise </a> après sans balise ouvrante. En dautres mots donc, je ne veux pas que mon mot clé soit en plein milieu d'un lien. Ex:
Pour le moment, mon code ressemble à cela:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <a .....> Une phrase avec mon mot clé</a> <--- NON <a....> Une phrase</a>avec mon mot clé <a...>ici</a> OUI
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 class autolink { public function parse($description) { //Recuperation de la liste des mots cés require_once(config::getPathClasses() . 'service/ServiceLiensDynamique.php'); $liensDyn = new ServiceLiensDynamique(config::$tableLiensDynamiques); $resultLiensDyn = $liensDyn->getLiensDynamiques(config::$siteInt); //Boucle sur chaque mot clé foreach($resultLiensDyn as $resultLiensDyn){ $lien = config::getAccueil().$resultLiensDyn['lien']; //lien a appliquer $nom = $resultLiensDyn['nom']; $arrayARemplacer[] = $resultLiensDyn['nom']; $arrayRemplacement[] = "<strong><a href=\"$lien\" title=\"$nom\">$nom</a></strong>"; } $description = str_ireplace($arrayARemplacer, $arrayRemplacement, $description,$count); //TODO vérifier qu'il n'y a pas de liens déjà présent via une balise </a> } }
Merci pour votre aide !!
Partager