|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre régulier
![]() Inscription : mai 2005 Messages : 359 ![]() |
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: Code :
Code :
Merci pour votre aide !! |
||||
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Inscription : mai 2005 Messages : 359 ![]() |
Personne ne peut m'aider ?
Pour rappel (et simplification de l'énoncé de mon problème) mon but est de pouvoir créer des liens sur des mots clés qui ne disposeraient pas déjà d'un lien. Je me suis cassé la tête toute la journée sur ça, sans réussite... En gros donc, je veux pouvoir dans mon regex récupérer les mots clés désirés qui ne disposeraient pas d'un <a href devant le mot et d'un </a> derrière. Merci |
|
|
00
|
|
|
#3 | ||
|
Membre à l'essai
![]() Développeur Web Inscription : avril 2009 Messages : 19 ![]() |
Bonjour,
Voilà une solution à ton problème (si j'ai bien compris): Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : mai 2005 Messages : 359 ![]() |
Oui, tu as parfaitement compris, et cela semble bien marcher
Je n'ai jamais été très fort en REGEX, et j'en ai chié sur les exclusions... Lors de mes tests, cela me supprimait carrément des bouts de la chaine... En un seul coup, tu as réussi, un grand merci à toi ! |
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() Inscription : mai 2005 Messages : 359 ![]() |
Il subiste quelques petits soucis que je n'avais pas pris en comte (si le mot clé est présent dans une balise <img,...
Je vais donc travailler dessus et posterai le tout si des fois ça peut servir à d'autres |
|
|
00
|
|
|
#6 | ||||||
|
Membre régulier
![]() Inscription : mai 2005 Messages : 359 ![]() |
Je suis de retour
Le code marche super sur de simples liens, mais si le mot clé se retrouve dans un alt, dans un <img src, dans un title, ou même dans un url ça ne fonctionne plus. J'ai donc essayé de rajouter le img, le alt=" et le title=" sans succès... soit ça me répète un nombre incalculable de fois le mot clé, soit cela me coupe la phrase... Mon code actuel est donc le suivant: Code :
Citation:
En effet soit je ne met qu'un seul espace dans ma chaine, et ça ne prend pas, soit j'en place plusieurs, et dans ce cas, mon texte est tronqué Code :
Citation:
Bref, j'ai de grosses lacunes |
||||||
|
|
00
|
|
|
#7 | ||
|
Membre régulier
![]() Inscription : mai 2005 Messages : 359 ![]() |
Apparement, j'ai trouvé quelque chose qui a l'air de bien fonctionner
Code :
|
||
|
|
00
|
|
|
#8 | ||
|
Membre habitué
![]() Inscription : mars 2009 Messages : 106 ![]() |
Bonjour,
Malheureusement cette dernière pattern laisse passer le texte des liens et provoque par conséquent des liens imbriqués, ce qui est mal. À défaut de le faire en une seule ligne tu peux séparer ta chaine de départ avec preg_split avec l'option PREG_SPLIT_DELIM_CAPTURE en utilisant comme séparateur les cas de figure à éviter (ie:
Reste plus qu'à effectuer le remplacement du mot clé, le cas échéant, dans les items qui ne sont pas le séparateur (soit un sur deux) et à recoller le tableau. Soit: Code :
|
||
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() Inscription : mai 2005 Messages : 359 ![]() |
Oui, tu as raison, cela me fait des liens imbriqués ! C'est moche, et pas forcément super bien par rapport à ce que je veux faire, mais c'est valide W3C (xhtml trans).
Je te remercie par avance pour ton code. Je vais essayer cela rapidement. Mais en tout cas, ce serait parfait si ça marche, que sa se fasse en une seule ou deux étapes |
|
|
00
|
|
|
#10 | ||
|
Membre habitué
![]() Inscription : mars 2009 Messages : 106 ![]() |
Citation:
Citation:
Teste bien. |
||
|
|
00
|
|
|
#11 |
|
Membre régulier
![]() Inscription : mai 2005 Messages : 359 ![]() |
Quand je disais moche, pas super bien, et valide w3C, c'était mon code qui faisait des doubles liens, pas ton code
|
|
|
00
|
|
|
#12 | ||
|
Membre habitué
![]() Inscription : mars 2009 Messages : 106 ![]() |
Code :
le mot clef recherché est le mot: class |
||
|
|
00
|
|
|
#13 |
|
Membre régulier
![]() Inscription : mai 2005 Messages : 359 ![]() |
J'ai essayé tout à l'heure ton code, cela a l'air de bien fonctionner sur me données de test, ce qui est déjà un bon point
Sauf cas super exceptionnel, mes mots clés ne seront pas des mots "réservés" utilisés en html. On n'est pas à l'abris, c'est sur, mais en théorie, point de problèmes. Ceci dit, en faisant un regex qui interdit que le mot clé soit entre < ... et > on devrait pouvoir s'en sortir non ? |
|
|
00
|
|
|
#14 |
|
Membre habitué
![]() Inscription : mars 2009 Messages : 106 ![]() |
si a<b<c alors c>a (le mot clé est "alors")
|
|
|
00
|
|
|
#15 | ||
|
Membre habitué
![]() Inscription : mars 2009 Messages : 106 ![]() |
Pour revenir sur cet ancien sujet, il y avait beaucoup plus simple, en une seule étape:
Code :
|
||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com