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 25/01/2008, 15h08   #1
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 55
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 55
Points : 10
Points : 10
Par défaut URL et tags qui ne s'affichent pas comme il le faut

Bonjour,

Voila, il y'a quelques mois j'avais codé une fonction pour gérer le bbcode, une partie de ce dernier était chargé de transformer une url en un lien hypertext.
Mais quelques mois après je m'y remet et malheureusement, ca ne fonctionne pas comme je le voudrais.
En fait quand l'url à modifier se trouve en début de chaine, celle ci ne se transforme pas et reste non cliquable, ceci s'applique aux url de cette forme (www.test.com ou [url=http://www.test.com]cliquez ici[url]), sinon ci celles ci se trouve dans la chaine et non au début, l'url est convertie.
Ou encore, quand je place un [url=http://www.test.com]cliquez ici[url] avant un autre lien, ca me renvoi une pagaille undéchiffrable, bref, du n'importe quoi.
Assez de blabla, voilà le code en question:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
   1.
      <?
   2.
      $chaine = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)','\\1http://\\2', $chaine);
   3.
      $chaine = preg_replace('#[^=](http://[a-z0-9.=/\\#&?_-]+)#i', '<a href="http://$1" target="_blank">$1</a>', $chaine);
   4.
      $chaine = preg_replace('#\[url=(http://(.+))\](.+)\[/url\]#iU', ' <a href="$1" target=_blank class="mainlink" >$3</a>', $chaine);
   5.
      $chaine = preg_replace('#\[url=(.+)\](.+)\[/url\]#iU', ' <a href="http://$1" target=_blank class="mainlink" >$2</a>', $chaine);
   6.
      ?>

La premiére ligne du code n'est pas de moi, mais elle pose aussi problème.

Si quelqu'un peu jeter un petit coup d'oeil là dessus et me dire ce qu'il faut y changer pour que ca fonctionne.


Merci à tous.
Bruno.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2008, 13h13   #2
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
Salut,
tes regex sont censées fonctionner avec un balise fermante [/url]. Est-ce que c'est bien ce que tu fais ?

D'autre part, les 2 premières semblent inutiles, il faudrait voir ce que tu veux permettre exactement comme BBCode.
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2008, 13h32   #3
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 55
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 55
Points : 10
Points : 10
Salut,

Merci pour ta réponse.

Oui j'utilise bien une balise fermante et concernant les deux première régex, l'une s'occupe de transformer une url de cette forme (www.site.com) vers celle là (http://www.site.com) et l'autre fait en sorte que toute url sous cette forme devienne un lien hypertext. finalement, les deux dernières s'occupent du bbcode.

Concrétement, ce que je veux faire, c'est de transformer toute url qui figure dans ma variable $chaine que ce soit un simple
www. , http:// , avec ou sans balise [ulr]

C'est faisable ?
Bruno.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h20.


 
 
 
 
Partenaires

Hébergement Web