Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1295 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  lien cliquable sans bbcode

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

lien cliquable sans bbcode

n°571062
bodbod
Planquez vous, bodbod arrive..
Posté le 19-11-2003 à 20:22:52  profilanswer
 

Bonjour a tous,
 
Voila je planche depuis hier sur un probleme qui me coince.
J'ai fait un script qui me convertit les

  • (color=..)texte(/color)
  • (url)URL(/url)
  • (url=url)texte(/url)
  • (img)url_image(/img)

+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
mood
Publicité
Posté le 19-11-2003 à 20:22:52  profilanswer
 

n°571083
xam_orpheu​s
Posté le 19-11-2003 à 21:01:28  profilanswer
 

bodbod a écrit :

Bonjour a tous,
 
Voila je planche depuis hier sur un probleme qui me coince.
J'ai fait un script qui me convertit les

  • (color=..)texte(/color)
  • (url)URL(/url)
  • (url=url)texte(/url)
  • (img)url_image(/img)

+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 ?


 
Comment ca ?

n°571095
bodbod
Planquez vous, bodbod arrive..
Posté le 19-11-2003 à 21:12:38  profilanswer
 

Xam_Orpheus a écrit :


 
Comment ca ?


Bonsoir  :hello:  
 
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 :
  1. http://www.hdf.fr par <a href=htpp://www.hdf.fr>http://www.hdf.fr</a>


 
C'est mieux ?
 
J'ai bien un truc du meme genre ici mais ca marche pas
http://forum.hardware.fr/forum2.ph [...] h=&subcat=

n°571121
xam_orpheu​s
Posté le 19-11-2003 à 22:11:12  profilanswer
 

Vi vi j'ai bien compris le but, mais c'est cette histoire d'espace dont tu parles que je comprend pas ;)

n°571160
THE REAL S​MILEY
The Real Résistance!
Posté le 19-11-2003 à 23:48:03  profilanswer
 

dans le topic des développeurs de forums, on a du aborder cette fonctionnalité:
http://forum.hardware.fr/forum2.ph [...] h=&subcat=


---------------
༼ つ ◕_◕ ༽つ
n°571244
Freekill
Electron libre…
Posté le 20-11-2003 à 05:33:36  profilanswer
 

$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);


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
n°571679
bodbod
Planquez vous, bodbod arrive..
Posté le 20-11-2003 à 15:52:44  profilanswer
 

Freekill a écrit :

$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);


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

n°571737
xam_orpheu​s
Posté le 20-11-2003 à 16:33:26  profilanswer
 

C'est quoi ton lien de départ ?

n°571775
bodbod
Planquez vous, bodbod arrive..
Posté le 20-11-2003 à 16:51:20  profilanswer
 

le lien www.ifrance.com/moulindecouche
se transforme en http://www.bodbod.com/dossier/www.ifrance.com/moulindecouche


Message édité par bodbod le 20-11-2003 à 16:52:30
n°571850
xam_orpheu​s
Posté le 20-11-2003 à 17:52:04  profilanswer
 

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 :)


Message édité par xam_orpheus le 20-11-2003 à 17:52:36
mood
Publicité
Posté le 20-11-2003 à 17:52:04  profilanswer
 

n°571901
bodbod
Planquez vous, bodbod arrive..
Posté le 20-11-2003 à 18:53:09  profilanswer
 

oui j'avais bien vu comme toi.
 
ligne 43 et 44 :

Code :
  1. $commentaire_modif = preg_replace("(^|\s)(http|https|ftp|mms)\:\/\/([^ !\'\"\(\)\[\]\r\n ]+)","<a href=\"\\2://\\3\" target=\"_blank\" >\\2://\\3</a>", $commentaire_modif);
  2. $commentaire_modif = preg_replace("(^|\s)www\.([^ !\'\"\(\)\[\]\r\n]+)/i","<a href=\"http://www.\\2\" target=\"_blank\">www.\\2</a>", $commentaire_modif);


 
ERREUR

Code :
  1. Warning: Unknown modifier '(' in /home/bodbod/.../bouffe.php3 on line 43
  2. Warning: Unknown modifier 'w' in /home/bodbod/.../bouffe.php3 on line 44


Message édité par bodbod le 20-11-2003 à 18:54:05
n°571906
Profil sup​primé
Posté le 20-11-2003 à 18:56:20  answer
 

bodbod a écrit :

le lien www.ifrance.com/moulindecouche
se transforme en http://www.bodbod.com/dossier/www.ifrance.com/moulindecouche

manque le http :)

n°571909
xam_orpheu​s
Posté le 20-11-2003 à 19:01:11  profilanswer
 

bodbod a écrit :


ERREUR

Code :
  1. Warning: Unknown modifier '(' in /home/bodbod/.../bouffe.php3 on line 43
  2. Warning: Unknown modifier 'w' in /home/bodbod/.../bouffe.php3 on line 44




 
php3 ? Ca vient peut être de là ;)


Message édité par xam_orpheus le 20-11-2003 à 19:01:21
n°571914
bodbod
Planquez vous, bodbod arrive..
Posté le 20-11-2003 à 19:10:11  profilanswer
 

Xam_Orpheus a écrit :


 
php3 ? Ca vient peut être de là ;)

j'ai remis l'extension .php et kenini :(

n°571955
bodbod
Planquez vous, bodbod arrive..
Posté le 20-11-2003 à 20:02:41  profilanswer
 

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 :
  1. $texte= preg_replace ("(^|\s)(http\:\/\/)([^ !\'\"\(\)\[\]\r\n ]+)","<a href=\"http://\\3\" target=\"_blank\" >http:\\3</a>",$texte)
  2. $texte= preg_replace ("(^|\s)(ftp\:\/\/)([^ !\'\"\(\)\[\]\r\n ]+)","<a href=\"ftp://\\3\" target=\"_blank\" >ftp://\\3</a>",$texte)
  3. $texte= preg_replace ("(^|\s)(www.)([^ !\'\"\(\)\[\]\r\n ]+)","<a href=\"http://www.\\3\" target=\"_blank\" >www.\\3</a>",$texte)


---------------
http://www.menuiseriemerceron.fr - http://www.atlantiquecoloration.fr
n°571957
bodbod
Planquez vous, bodbod arrive..
Posté le 20-11-2003 à 20:13:11  profilanswer
 

ben rien de mieux.
 
Warning: Unknown modifier '(' in ....sur les 3 lignes


---------------
http://www.menuiseriemerceron.fr - http://www.atlantiquecoloration.fr
n°572691
bodbod
Planquez vous, bodbod arrive..
Posté le 21-11-2003 à 15:54:32  profilanswer
 
n°573870
bodbod
Planquez vous, bodbod arrive..
Posté le 23-11-2003 à 14:51:18  profilanswer
 

Bon ben si personne ne voit, je vais faire sans tanpis  :(


---------------
http://www.menuiseriemerceron.fr - http://www.atlantiquecoloration.fr
n°573971
Profil sup​primé
Posté le 23-11-2003 à 18:21:09  answer
 

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 :
  1. $ToPreg=preg_replace('[size=^([0-9])$]', '<font size=\\1>', $ToPreg);

mais ca marche pas et ca m'affiche mon $ToPreg a savoir [.font=7]blabla[/font] :D
 
ptit coup de main, ca doit pas etre compliqué et ca m'aiderai a comprendre :)


Message édité par Profil supprimé le 23-11-2003 à 18:22:25
n°573997
karamilo
Posté le 23-11-2003 à 18:52:38  profilanswer
 

$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.


Message édité par karamilo le 23-11-2003 à 18:53:45
n°574052
Profil sup​primé
Posté le 23-11-2003 à 20:06:06  answer
 

merci c'est niquel mais peu tu explique 2 passages
 
(.*?) et #si

n°574070
karamilo
Posté le 23-11-2003 à 20:37:59  profilanswer
 

. 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

n°574087
Profil sup​primé
Posté le 23-11-2003 à 20:48:54  answer
 

wow joli
 
merci bien

n°574092
Profil sup​primé
Posté le 23-11-2003 à 20:53:10  answer
 

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

n°574101
karamilo
Posté le 23-11-2003 à 20:58:07  profilanswer
 

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

n°574108
Profil sup​primé
Posté le 23-11-2003 à 21:02:59  answer
 

okay :jap:

n°574204
bodbod
Planquez vous, bodbod arrive..
Posté le 23-11-2003 à 22:47:06  profilanswer
 

karamilo a écrit :

$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.


Bon alors, je tente un essai

Code :
  1. $commentaire_modif = preg_replace("#(^|\s)(http|https|ftp|mms)\:\/\/(\[^ !\'\"\(\)\[\]\r\n \]+)#","<a href=\"\\2://\\3\" target=\"_blank\" >\\2://\\3</a>", $commentaire_modif);
  2.  
  3.   $commentaire_modif = preg_replace("#(^|\s)www\.(\[^ !\'\"\(\)\[\]\r\n\]+)/i#","<a href=\"http://www.\\2\" target=\"_blank\">www.\\2</a>", $commentaire_modif);


J'ai bon ou pas ?


---------------
http://www.menuiseriemerceron.fr - http://www.atlantiquecoloration.fr
n°574354
Profil sup​primé
Posté le 24-11-2003 à 09:54:39  answer
 

ben moi j'ai fait  
 

Code :
  1. $ToPreg=preg_replace('#\[url=(http|https|ftp|mms)(\:\/\/[a-zA-Z0-9_.-]+.[a-zA-Z0-9]+)\](.*?)\[/url\]#si', '<a href="$1$2">$3</a>', $ToPreg);
  2. $ToPreg=preg_replace('#\[url=([a-zA-Z0-9_.-]+.[a-zA-Z0-9_.-]+.[a-zA-Z0-9]+)\](.*?)\[/url\]#si', '<a href="http://$1">$2</a>', $ToPreg);


 
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

n°574369
bodbod
Planquez vous, bodbod arrive..
Posté le 24-11-2003 à 10:27:27  profilanswer
 

chacal_one333 a écrit :

ben moi j'ai fait  
 

Code :
  1. $ToPreg=preg_replace('#\[url=(http|https|ftp|mms)(\:\/\/[a-zA-Z0-9_.-]+.[a-zA-Z0-9]+)\](.*?)\[/url\]#si', '<a href="$1$2">$3</a>', $ToPreg);
  2. $ToPreg=preg_replace('#\[url=([a-zA-Z0-9_.-]+.[a-zA-Z0-9_.-]+.[a-zA-Z0-9]+)\](.*?)\[/url\]#si', '<a href="http://$1">$2</a>', $ToPreg);


 
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


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.


---------------
http://www.menuiseriemerceron.fr - http://www.atlantiquecoloration.fr
n°574427
Profil sup​primé
Posté le 24-11-2003 à 11:26:23  answer
 

tu veut dire un lien tout bete genre http://mal.tete.com sans les balise autour?

n°575195
bodbod
Planquez vous, bodbod arrive..
Posté le 24-11-2003 à 22:23:34  profilanswer
 

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.


---------------
http://www.menuiseriemerceron.fr - http://www.atlantiquecoloration.fr
n°575339
Profil sup​primé
Posté le 25-11-2003 à 06:47:13  answer
 

Code :
  1. $ToPreg=preg_replace('#(http|https|ftp|mms)(\:\/\/[a-zA-Z0-9_.-]+.[a-zA-Z0-9]+)#si', '<a href="$1$2">$12</a>', $ToPreg);
  2.   $ToPreg=preg_replace('#([a-zA-Z0-9_.-]+.[a-zA-Z0-9_.-]+.[a-zA-Z0-9]+)#si', '<a href="http://$1">$1</a>', $ToPreg);


 
[:spamafote]
 
enfin test voir chui pas un chef des regexp


Message édité par Profil supprimé le 25-11-2003 à 06:47:34
n°576168
bodbod
Planquez vous, bodbod arrive..
Posté le 25-11-2003 à 23:06:20  profilanswer
 

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);


---------------
http://www.menuiseriemerceron.fr - http://www.atlantiquecoloration.fr
n°576313
Profil sup​primé
Posté le 26-11-2003 à 08:05:51  answer
 

ben non c'est pas forcement www, ca peu etre un autre sous domaine

n°576369
bodbod
Planquez vous, bodbod arrive..
Posté le 26-11-2003 à 09:19:42  profilanswer
 

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


---------------
http://www.menuiseriemerceron.fr - http://www.atlantiquecoloration.fr
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  lien cliquable sans bbcode

 

Sujets relatifs
[HTML] Ouvrir un lien dans une nouvelle page?[PHP] Open_basedir et lien symbolique
[php] lien vers image en php pour récup REFERER[html] envoyer un formulaire avec un lien et non un input submit ??
[PHP-HTaccess] faire un lien qui ouvre un pdf dans le navigateurLien entre 2 programmes via un tube
[HTML] Lien sur une image ?[HTML]Faire un lien "_blank" mais en full screen
lien pour signification des messages d'erreurs[HTML] comment faire pour qu'un lien hypertexte...
Plus de sujets relatifs à : lien cliquable sans bbcode


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR