lien cliquable sans bbcode - PHP - Programmation
Marsh Posté le 19-11-2003 à 21:01:28
bodbod a écrit : Bonjour a tous,
+gras, souligné, italique |
Comment ca ?
Marsh Posté le 19-11-2003 à 21:12:38
Xam_Orpheus a écrit : |
Bonsoir
En fait je recupere une donnée dans ma table sql que j'affiche avec un echo.
Avant l'echo, je fais le traitement de la variable.
Tout marche bien quand on met le bbcode mais si il y a un lien il est compris comme texte.
En fait je veux remplacer
Code :
|
C'est mieux ?
J'ai bien un truc du meme genre ici mais ca marche pas
http://forum.hardware.fr/forum2.ph [...] h=&subcat=
Marsh Posté le 19-11-2003 à 22:11:12
Vi vi j'ai bien compris le but, mais c'est cette histoire d'espace dont tu parles que je comprend pas
Marsh Posté le 19-11-2003 à 23:48:03
dans le topic des développeurs de forums, on a du aborder cette fonctionnalité:
http://forum.hardware.fr/forum2.ph [...] h=&subcat=
Marsh Posté le 20-11-2003 à 05:33:36
$search = "#(^|[\r\n\s\]\>])(([\w]+:\/\/)|(www))([^ \n\r\<\[]+)#i;
$replace = "\\1<a href=\"\\3\\4\\5\" target=\"_blank\">\\3\\4\\5</a>";
$text = preg_replace( $search, $replace, $text);
Marsh Posté le 20-11-2003 à 15:52:44
Freekill a écrit : $search = "#(^|[\r\n\s\]\>])(([\w]+:\/\/)|(www))([^ \n\r\<\[]+)#i; |
ca marche bien pour les http mais y a un probleme pour les www car ca devient http://www.monsite.com/dossier/www.hdf.fr
Marsh Posté le 20-11-2003 à 16:51:20
le lien www.ifrance.com/moulindecouche
se transforme en http://www.bodbod.com/dossier/www.ifrance.com/moulindecouche
Marsh Posté le 20-11-2003 à 17:52:04
Ah oui, c'est parce que comme il n'y a pas de http://, c'est interprété par le browser comme un lien relatif à ton site et non pas un lien global.
Vu que dans un cas faut rajouter le "http://" et pas dans l'autre, on ne peut pas faire tout en une seule expression régulière (ou alors c'est encore plus compliqué, ca je sais pas faire).
Donc faut faire une exp reg pour les liens du type http://quelque chose et une autre pour les www.quelquechose
Dans le topic que tu donnes dans ton premier post, forummp3 donne les deux reg exp qu'il faut, je les ait essayé ca marche niquel
Marsh Posté le 20-11-2003 à 18:53:09
oui j'avais bien vu comme toi.
ligne 43 et 44 :
Code :
|
ERREUR
Code :
|
Marsh Posté le 20-11-2003 à 18:56:20
bodbod a écrit : le lien www.ifrance.com/moulindecouche |
manque le http
Marsh Posté le 20-11-2003 à 19:01:11
bodbod a écrit :
|
php3 ? Ca vient peut être de là
Marsh Posté le 20-11-2003 à 19:10:11
ReplyMarsh Posté le 20-11-2003 à 20:02:41
De toute facon, le type www et http voir ftp seront amplement suffisant.
Peut peut on faire 3chaine pour eviter les erreurs.
Je vais tester ca et je vous tient au courant :
Code :
|
Marsh Posté le 20-11-2003 à 20:13:11
ben rien de mieux.
Warning: Unknown modifier '(' in ....sur les 3 lignes
Marsh Posté le 21-11-2003 à 15:54:32
personne ne voit ?
Marsh Posté le 23-11-2003 à 14:51:18
Bon ben si personne ne voit, je vais faire sans tanpis
Marsh Posté le 23-11-2003 à 18:21:09
tient je m'inscruste pour profiter de ce topic sur les BB
en fait j'ai fait le meme system mais pour les fonts
j'arriver pas a recuperer la valeur specifié (pas encore tres rodé sur les regexp
j'ai
Code :
|
mais ca marche pas et ca m'affiche mon $ToPreg a savoir [.font=7]blabla[/font]
ptit coup de main, ca doit pas etre compliqué et ca m'aiderai a comprendre
Marsh Posté le 23-11-2003 à 18:52:38
$topreg = preg_replace("#\[size=([0-9])\](.*?)\[/size\]#si",'<font size="$1">$2</font>', $topreg);
Il faut echapper les caracteres speciaux, genre [ ou ]. Mettre des delimiteurs ( /regex/ ou bien #regex# ... )
edit:
pareil pour bodbod : il n'y a pas de delimiteurs.
Marsh Posté le 23-11-2003 à 20:06:06
merci c'est niquel mais peu tu explique 2 passages
(.*?) et #si
Marsh Posté le 23-11-2003 à 20:37:59
. represente n'importe quel caractere
* dit qu'il doit y avoir soit 0 soit plus d'un '.', cad de n'importe quel caractere
? reduit la gourmandise de preg. (.*?) representera toute la chaine jusqu'a trouver la suite ( cad [/size] )
# c'est le delimiteur fin
s c'est pour dire que . represente aussi les sauts de ligne
i c'est pour ne pas respecter la casse
Marsh Posté le 23-11-2003 à 20:53:10
ha wai un dernier truc est ce que [a-zA-Z0-9_.-]+? revient a un .*?
bien sur c'est plus court mais je voudrait juste savoir si c'est equivalent
Marsh Posté le 23-11-2003 à 20:58:07
non c'est pas equivalent
parce que . represente aussi ~#('à)é= et tous les caracteres speciaux et tous les espaces ( tab ... )
en plus d'un cote tu as + et de l'autre * ...
+ = au moins 1
* = au moins 0
Marsh Posté le 23-11-2003 à 22:47:06
karamilo a écrit : $topreg = preg_replace("#\[size=([0-9])\](.*?)\[/size\]#si",'<font size="$1">$2</font>', $topreg); |
Bon alors, je tente un essai
Code :
|
J'ai bon ou pas ?
Marsh Posté le 24-11-2003 à 09:54:39
ben moi j'ai fait
Code :
|
dans le premier cas si http...est specifié et dans le deuxieme si on a juste www. ou n'importe quel autre sous domaine
ca marche nickel
Marsh Posté le 24-11-2003 à 10:27:27
chacal_one333 a écrit : ben moi j'ai fait
|
OK mais d'apres ce que je vois, on est obligé de passeé par
(url... (/url) //mettre [] a la place de ()
Et c'est sans ce code que je voudrait qu'il me change le lien en lien cliquable.
Marsh Posté le 24-11-2003 à 11:26:23
tu veut dire un lien tout bete genre http://mal.tete.com sans les balise autour?
Marsh Posté le 24-11-2003 à 22:23:34
chacal_one333 a écrit : tu veut dire un lien tout bete genre http://mal.tete.com sans les balise autour? |
Oui.
Car vu que le texte se trouve dans la bdd, avec un echo, ca ressort le paragraphe en texte brut meme s'il y a des liens.
Marsh Posté le 25-11-2003 à 06:47:13
Code :
|
enfin test voir chui pas un chef des regexp
Marsh Posté le 25-11-2003 à 23:06:20
Bon alors, ca part d'un bon principe mais le probleme c'est qu'il faudrait verifié ce qu'il y a juste devant http: car ca le remplace en boucle.
Pour la deuxieme, c'etait pas plutot ca ?
$ToPreg=preg_replace('#(www\.)([a-zA-Z0-9_.-]+.[a-zA-Z0-9_.-]+.[a-zA-Z0-9]+)#si', '<a href="http://$2">$2</a>', $ToPreg);
Marsh Posté le 26-11-2003 à 08:05:51
ben non c'est pas forcement www, ca peu etre un autre sous domaine
Marsh Posté le 26-11-2003 à 09:19:42
chacal_one333 a écrit : ben non c'est pas forcement www, ca peu etre un autre sous domaine |
ah ok, les sous domaine du genre forum.hardware.com
Bon je vais voir.
Et pour le premiere.
Euh au fait, c'est pareil
essai => erreur 500
Marsh Posté le 19-11-2003 à 20:22:52
Bonjour a tous,
Voila je planche depuis hier sur un probleme qui me coince.
J'ai fait un script qui me convertit les
+gras, souligné, italique
Mais je penche sur un probleme qui est le fait qu'il puisse y avoir des liens sans le bbcode
cad : blabla http://www.blabla.com blabla
ou blabla www.url.com blabla
j'ai bien essayer de convertir les truc du genre ( http://)(?)(/ ) mais ca fou la merde si un premier lien commence par un espace mais qui ne fini pas par un espace.
Quel conseil pouvez vous me donner ?
Est ce que ca peut se faire en php ? en js ?
Message édité par bodbod le 20-11-2003 à 19:55:04