|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 1 552 ![]() |
bonjour.
j'ai essayé de faire un lien avec l'expression suivante: Code :
$chaine=preg_replace('#\[url=(http://[[:alnum:]\-!\#$%&*+\\/.=?^_`{|}~;:]+\.[[:alnum:]]{1,63})\](.+)\[/url\]#iU','<a href="http://$1" target="blank">$2</a>',$message);//lien avec adresse non affichée si vous aviez une idée... merci
__________________
Méphistophélès Si la solution ne résout pas votre problème, changez le problème... |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
Bonsoir,
Essaye cela : Code :
$chaine = preg_replace("/(\[url=(.[^\"\'\(\)\<\>\]\[]*?)\])(.*?)(\[\/url\])/i", "<a href=\"\\2\">\\3</a>", $message); [EDIT] : Il y a aussi le $chaine qui est différent du $message ... il faudrait peut-être choisir l'un ou l'autre non ? |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 1 552 ![]() |
non, pour le $chaine, c'est normal.
pour ton code, je l'ai un peu adapté pour qu'il vérifie la présence du http (je ne veut pas de ftp) et d'extention. il marche sans aucuns problème, mais j'aimerais savoir pourquoi le mien ne marche-t'il pas ? merci.
__________________
Méphistophélès Si la solution ne résout pas votre problème, changez le problème... |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 1 552 ![]() |
non, les délimiteurs sont au choix, et pour ma part je préfere les '#' car ils sont moins utilisés que les '/' (ça fait mois de '\' à taper)
sinon, Théoriquement, mon code doit fonctionner comme ceci:bon, là, pas besoin d'xplications, c'est clair. [CODE]#\ je ne veut que des url commençant par http. bon, alors le premier crochet montre que c'est un choix. [:alnum:] désigne normalement 0-9a-zA-Z et les autres caractères à la suite sont cencé être les caractères autorisés (qui ne devraient pas avoir besoin de l'antislash si j'en crois le tutoriel du cyberzoïde). On ferme tout ça et + veut dire que j'en veut plusieurs. )je veut une extention (.html,.com,...) qui se termine par entre 3 et 63 caractères alpahanumériques. on ferme le crochet. entre et . on met dans $2 on ferme le on finis la regex, i pour ne pas tenir compte de la casse, U pour éviter les super liens. Code :
,'<a href="http://$1" target="blank">$2</a>',$message); bref, si quelqu'un pouvais m'expliquer la cause de mon erreur... merci Edit: tiens, y'a un bug dans le code du forum: il tient compte du "[url] qui commence dans le code et continue apres. faudra le signaler.
__________________
Méphistophélès Si la solution ne résout pas votre problème, changez le problème... |
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : décembre 2006 Messages : 109 ![]() |
le deuxième bloc dit qu'il n'y a qu'un seul et unique point dans une adresse http... l'expression sera toujours en échec sur une adresse http.
|
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 1 552 ![]() |
non, ça veut dire un seul point avant l'extention puisque le point est autorisé dans l'expression précédente.
__________________
Méphistophélès Si la solution ne résout pas votre problème, changez le problème... |
|
|
00
|
|
|
#8 | ||
|
Membre habitué
![]() Inscription : décembre 2006 Messages : 109 ![]() |
non, le premier point rencontré dans la chaine $message fera passer au second bloc "\.[[:alnum:]]{1,63}", aucun doute possible.
il faudrait un ancrage ou valider chaque point possible ou important comme: Code :
|
||
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 1 552 ![]() |
ha d'accord.
je pensait qu'il ne cherchais que la forme. merci beaucoup.
__________________
Méphistophélès Si la solution ne résout pas votre problème, changez le problème... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com