Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/08/2011, 11h30   #1
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 41
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 41
Points : 12
Points : 12
Par défaut Ma BBCode URL avec gestion d'ancre

Bonjour tout le monde!

Alors voilà, j'ai fait un petit bbcode perso pour gérer les urls, qui fonctionne très bien jusqu'à maintenant...

Mais voilà, j'essaie de le modifier pour y inclure les ancres, et à ce moment là, ca bug... Je vous détaille les différents essais que j'ai fait...

Ce code ci-après est le code "basique", que j'utilisais jusqu'à maintenant, et qui fonctionne très bien...
Code :
%(\<a href="http://){1}((http://){1}(www.){0,1}([a-z0-9-" target="_blank">{1,})+([.][a-z]{1,3}){1}(/?[a-z0-9_-]*)*([.][a-z0-9]{1,}){0,}((\?|&)?[a-z0-9]*[=]{1}[a-z0-9_-]*)*){0,1}(]{1}([[:print:]]*)(\</a>){1}){1}%i
Ensuite, je me suis dit que l'ancre se placant à la fin, j'ai essayé de modifier le complément d'url, avec les variables, etc... Ce qui a donné ceci, mais là, rien ne change, seul les anciennes url, sans ancre, sont trouvées...
Code :
%(\<a href="http://){1}((http://){1}(www.){0,1}([a-z0-9-" target="_blank">{1,})+([.][a-z]{1,3}){1}(/?[a-z0-9_-]*)*([.][a-z0-9]{1,}){0,}((\?|&|#)?[a-z0-9]*[=]{0,1}[a-z0-9_-]*)*){0,1}(]{1}([[:print:]]*)(\</a>){1}){1}%i
Puis je me suis dit, pourquoi se casser les noi****, pour les compléments, j'autorise tout...
Code :
%(\<a href="http://){1}((http://){1}(www.){0,1}([a-z0-9-" target="_blank">{1,})+([.][a-z]{1,3}){1}(/?[a-z0-9_-]*)*([.][a-z]{1,}){0,}.*)(]{1}([[:print:]]*)(\</a>){1}){1}%i
Mais là, si 2 balises se situent sur la même ligne, il commence à la première, et se finit à la fin de la deuxième, en mettant comme lien tout ce qui se trouve entre-deux... Bref, pas vraiment ce qui est voulu...

J'ai fait également d'autres essais, mais tous très proches de ceux-ci, avec d'infimes modifications, mais les résultats sont identiques...

Auriez-vous donc une suggestion?!

PS: Je suis presque sur que je suis proche du but, mais je butte... Et je suis presque sur également que la solution est toute bête... Mais je ne la trouve pas...
47-47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2011, 11h42   #2
Candidat au titre de Membre du Club
 
Inscription : février 2006
Messages : 41
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 41
Points : 12
Points : 12
Bon, désolé, mais c'est bien ce que je disais... La réponse était vraiment toute bête!

Après encore un moment de recherche et une petite lumière, j'ai testé ceci:

Code :
%(\<a href="http://){1}((http://){1}(www.){0,1}([a-z0-9-" target="_blank">{1,})+([.][a-z]{1,3}){1}(/?[a-z0-9_-]*)*([.][a-z]{1,}){0,}((\?|&|#|&amp;)?[a-z0-9]*[=]{0,1}[a-z0-9_-]*)*){0,1}(]{1}([[:print:]]*)(\</a>){1}){1}%i
En fait, le "&" était codé dans l'url que j'avais... Ce qui fait qu'avec cette url, ca ne fonctionnait pas... -_- Mais maintenant, avec ca, tout fonctionne visiblement!
47-47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h22.


 
 
 
 
Partenaires

Hébergement Web