Insérer des basiles href et target= "_blank" dans un texte

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Insérer des basiles href et target= "_blank" dans un tex

Message par SPH »

Gally, peut etre que ton dernier code basé sur mon code marchera avec pb2web ! Ce serait l'essenciel :P

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Insérer des basiles href et target= "_blank" dans un tex

Message par SPH »

falsam a écrit :@SPH: Merci ça Fonctionne avec SpiderBasic mais pas avec PB2Web pour une raison que je n'ai pas encore analysé.
Quand tu auras trouvé, tu me diras. Ca m'interesse de savoir ! 8)

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Insérer des basiles href et target= "_blank" dans un tex

Message par nico »

Il peut y avoir des fins de lignes qui finissent par un point, genre:
la$="texte : http://www.clubic.com et https://manga.be florence et les autres.C'est pourquoi"

Sinon, voici le miens:

Code : Tout sélectionner

InitNetwork()

Procedure.s URL(Texte.s)
  Protected Count.l, Mot1.s, Mot2.s, Site.s, a.l
  Protected Result.s, EnTete$
  
  Result = Trim(Texte)
  Count = FindString(Texte, " ")
  
  For a = 1 To Count + 1
    Mot1 = StringField(Texte, a, " ")
    Mot1 = LCase(Mot1)
    If FindString(Mot1, ".") > 0 And Left(Mot1, 1) <> "."
      Debug Mot1
      If Left(Mot1, 4) <> "http"
        Mot2 = "http://" + Mot1
      Else
        Mot2 = Mot1
      EndIf 
      
      Site = GetURLPart(Mot2, #PB_URL_Site) 
      
      EnTete$ = GetHTTPHeader(Mot2)
      If FindString(EnTete$, "HTTP/1.1 200 OK")
        Result = ReplaceString(Result, Mot1, "<a href='" + Mot2 +"' target='_blank'>" + Site  +"</a>", #PB_String_NoCase)
      EndIf
      Mot1 = "" : Mot2 = "" : Site = ""
    EndIf
  Next a
  
  Result = ReplaceString(Result, "'", Chr(34))
  
  ProcedureReturn Result
EndProcedure


la$="texte : www.clubic.com et https://manga.be florence et les autres"

Debug URL(la$)

Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Insérer des basiles href et target= "_blank" dans un tex

Message par SPH »

nico a écrit :Il peut y avoir des fins de lignes qui finissent par un point, genre:
la$="texte : http://www.clubic.com et https://manga.be florence et les autres.C'est pourquoi"
Mon code gere de genre de tournure de phrase. :P

Vivement que falsam trouve ce qui est incompatible avec pb2web :idea:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Insérer des basiles href et target= "_blank" dans un tex

Message par nico »

Et le code que j'ai posté est compatible ou pas, je n'ai pas installé SpiderBasic.
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Insérer des basiles href et target= "_blank" dans un tex

Message par SPH »

nico a écrit :Et le code que j'ai posté est compatible ou pas, je n'ai pas installé SpiderBasic.
Moi non plus, je n'ai pas SB :|

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Insérer des basiles href et target= "_blank" dans un tex

Message par Marc56 »

Hello,

J'ai cherché pourquoi ma version (avec les regex) ne fonctionne pas dans SB (1.0 B2 x86): les fonctions liées à la gestion des expressions régulières sont bien moins nombreuses que celle dans la version 5.31

Command Index (SB 1.0 B2)

CreateRegularExpression
ExtractRegularExpression
FreeRegularExpression
IsRegularExpression
MatchRegularExpression
RegularExpressionError
ReplaceRegularExpression

Sommaire des commandes (PB 5.31)

CountRegularExpressionGroups
CreateRegularExpression
ExamineRegularExpression
ExtractRegularExpression
FreeRegularExpression
IsRegularExpression
MatchRegularExpression
NextRegularExpressionMatch
RegularExpressionError
RegularExpressionGroup
RegularExpressionGroupLength
RegularExpressionGroupPosition
RegularExpressionMatchLength
RegularExpressionMatchPosition
RegularExpressionMatchString
RegularExpressionNamedGroup
RegularExpressionNamedGroupLength
RegularExpressionNamedGroupPosition
ReplaceRegularExpression

On n'a pas notamment les deux commandes en gras, que j'avais utilisé.

J'ai donc adapté mon petit code en me basant sur l'exemple de l'aide sur la commande de base ExtractRegularExpression() et réalisé ceci:

Code : Tout sélectionner

Buffer$ = "Cliques sur ce lien https://www.youtube.com/?hl=fr&gl=FR ou sur http://youtube.com ou www.google.fr"
Regexp$ = "(www|https?://)([^\s]+)"

If CreateRegularExpression(0, Regexp$)
  Dim Result$(0)
  NbFound = ExtractRegularExpression(0, Buffer$, Result$())
  For k = 0 To NbFound-1
    Debug Result$(k)
  Next
Else
  Debug RegularExpressionError()
EndIf
et ça marche :D

PS. Mon expression régulière est rudimentaire, puisqu'elle cherche:
- Commence par www ou http:// ou https://
- Suivi de n'importe quoi sauf un 'espace' (= espace ou saut de ligne, saut de page, retour chariot ou tab)

Off Topic/Forum: Je viens de faire l'essai avec PB2Web (v20150302) (je n'utilise pas, mais j'ai installé pour faire le test)
(L'exemple de base de pb2web fonctionne, donc ma config est ok (apache 2.2.25 sur Windows 8.1))

Même programme mais en ajoutant la ligne 'IncludeFile "c:\pb2web\p2w.pbi"' comme demandé par le message
et j'ai un message d'erreur 'Script error.
file:///C:/Users/Marc/AppData/Local/Temp/application.js
0'
Donc effectivement il y a quelque chose qu'il ne digère pas alors que Spider et PB sont OK
application.js est bien généré, mais comme j'y connais rien en js, je peux pas dire ce qui cloche :?: :?
:wink:
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Insérer des basiles href et target= "_blank" dans un tex

Message par falsam »

Bonjour Marc56.
Marc56 a écrit :je peux pas dire ce qui cloche
Les fonctionnalités PureBasic liées aux expressions réguliere ne sont pas implémentées dans PB2Web.

A part ça, j'aime les gens comme toi qui s'acharnent sur la recherche d'une solution. Merci :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Insérer des basiles href et target= "_blank" dans un tex

Message par GallyHC »

Encore une petite modification du code de SPH

Code : Tout sélectionner

Define i.i
Define.s stxt, result, text ="texte : http://www.clubic.com et https://manga.be florence et les autres et www.koakdesign.info"

Repeat
  i = FindString(text, " ", 1)
  If i = 0
    stxt = text
    text = #NULL$
  Else
    stxt = Mid(text, 1, i - 1)
    text = Right(text, Len(text) - i)
  EndIf
  If LCase(Left(stxt, 7)) = "http://" Or LCase(Left(stxt, 8)) = "https://" Or LCase(Left(stxt, 4)) = "www."
    result + "<a href=" + Chr(34) + stxt + Chr(34) + " target=" + Chr(34) + "_blank" + Chr(34) + ">" + stxt + "</a>"
  Else
    result + stxt
  EndIf
  If text <> #NULL$
    result + " "
  EndIf
Until text = #NULL$


Debug "*" + result + "*"
gallyhc
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Insérer des basiles href et target= "_blank" dans un tex

Message par GallyHC »

Une autre version

Code : Tout sélectionner

EnableExplicit

Procedure.s urlifier(stext.s)
;
  Define.i i, urlnum
  Define.s stemp, result

  If stext <> #NULL$
    urlnum = CountString(stext, " ")
    For i=0 To urlnum
      stemp = StringField(stext, i + 1, " ")
      If LCase(Left(stemp, 7)) = "http://" Or LCase(Left(stemp, 8)) = "https://" Or LCase(Left(stemp, 4)) = "www."
        result + "<a href=" + Chr(34) + stemp + Chr(34) + " target=" + Chr(34) + "_blank" + Chr(34) + ">" + stemp + "</a>"
      Else
        result + stemp
      EndIf
      If i < urlnum
        result + " "
      EndIf
    Next i
    ProcedureReturn result
  EndIf

EndProcedure

Define Buffer.s = "Cliques sur ce lien https://www.youtube.com/?hl=fr&gl=FR ou sur http://youtube.com ou encore www.koakdesign.info"
Debug urlifier(Buffer)

Buffer = "https://www.youtube.com/?hl=fr&gl=FR http://youtube.com ou encore www.koakdesign.info"
Debug urlifier(Buffer)

Buffer = "Cliques sur ce lien www.koakdesign.info"
Debug urlifier(Buffer)

Buffer = "Cliques"
Debug urlifier(Buffer)
GallyHC
Dernière modification par GallyHC le jeu. 12/mars/2015 17:16, modifié 4 fois.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Insérer des basiles href et target= "_blank" dans un tex

Message par Marc56 »

falsam a écrit :A part ça, j'aime les gens comme toi qui s'acharnent sur la recherche d'une solution. Merci :)
Merci falsam,

En fait je fais ça (et bien d'autres choses) en grande partie aussi pour (essayer de) me créer des nouveaux synapses (puisqu'il parait qu'on en fait tout le temps contrairement à ce qu'on croyait avant, mais c'était avant) La "quinquagénitude" est déjà passée (52 le mois prochain) il faut donc agiter les neurones sinon ils rouillent vite :?
Donc, je me suis remis à la programmation et suis en train de reprendre un certain nombre de petits programmes juste pour leur ajouter des fonctionnalités que je n'avais jamais essayé dans d'autres environnement (le multi-tache, le drag-n-drop). Le deuxième objectif étant la programmation Zen: Le minimum de lignes de code et le plus épuré/lisible possible :wink:

"We choose to go to the moon. We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard, because that goal will serve to organize and measure the best of our energies and skills, because that challenge is one that we are willing to accept, one we are unwilling to postpone, and one which we intend to win, and the others, too."
- JFK - discours du 12 septembre 1952 -
« Nous avons choisi d'aller sur la Lune. Nous avons choisi d'aller sur la Lune au cours de cette décennie et d'accomplir d'autres choses encore, non pas parce que c'est facile, mais justement parce que c'est difficile. Parce que cet objectif servira à organiser et à offrir le meilleur de notre énergie et de notre savoir-faire, parce que c'est le défi que nous sommes prêt à relever, celui que nous refusons de remettre à plus tard, celui que nous avons la ferme intention de remporter, tout comme les autres. »
Source: http://fr.wikipedia.org/wiki/We_choose_ ... o_the_Moon

s/go to the moon/programming/
s/decade/now/
:mrgreen:
Avatar de l’utilisateur
Mindphazer
Messages : 695
Inscription : mer. 24/août/2005 10:42

Re: Insérer des basiles href et target= "_blank" dans un tex

Message par Mindphazer »

Marc56 a écrit : - JFK - discours du 12 septembre 1952 -
« Nous avons choisi d'aller sur la Lune. Nous avons choisi d'aller sur la Lune au cours de cette décennie et d'accomplir d'autres choses encore, non pas parce que c'est facile, mais justement parce que c'est difficile. Parce que cet objectif servira à organiser et à offrir le meilleur de notre énergie et de notre savoir-faire, parce que c'est le défi que nous sommes prêt à relever, celui que nous refusons de remettre à plus tard, celui que nous avons la ferme intention de remporter, tout comme les autres. »
Source: http://fr.wikipedia.org/wiki/We_choose_ ... o_the_Moon

s/go to the moon/programming/
s/decade/now/
:mrgreen:
Si je peux me permettre une correction, c'était le 12 septembre 1962 :-)
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Insérer des basiles href et target= "_blank" dans un tex

Message par Marc56 »

Mindphazer a écrit :Si je peux me permettre une correction, c'était le 12 septembre 1962 :-)
Oups, Merci,
(et encore quelques uns de mes neurones qui ont foutu le camps entre la lecture et l'écriture) :mrgreen:
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Insérer des basiles href et target= "_blank" dans un tex

Message par GallyHC »

Petite correction pour un problème sur la conversion des url avec juste "www.", il faut forcement avoir "http://" avant pour href=""

Code : Tout sélectionner

EnableExplicit

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Procedure.s TextToURL(stext.s)
;
  Protected i.i       = 0
  Protected urlnum.i  = 0
  Protected stemp.s   = #NULL$
  Protected result.s  = #NULL$

  If stext <> #NULL$
    urlnum = CountString(stext, " ")
    For i=0 To urlnum
      stemp = StringField(stext, i + 1, " ")
      If LCase(Left(stemp, 7)) = "http://" Or LCase(Left(stemp, 8)) = "https://" Or LCase(Left(stemp, 4)) = "www."
        If LCase(Left(stemp, 4)) <> "www."
          result + "<a href=" + Chr(34) + stemp + Chr(34) + " target=" + Chr(34) + "_blank" + Chr(34) + ">" + stemp + "</a>"
        Else
          result + "<a href=" + Chr(34) + "http://" + stemp + Chr(34) + " target=" + Chr(34) + "_blank" + Chr(34) + ">" + stemp + "</a>"
        EndIf         
      Else
        result + stemp
      EndIf
      If i < urlnum
        result + " "
      EndIf
    Next i
    ProcedureReturn result
  EndIf

EndProcedure

; +--------------------------------------------------------------------------+
; |                                                                          |
; +--------------------------------------------------------------------------+

Define Buffer.s = "Cliques sur ce lien https://www.youtube.com/?hl=fr&gl=FR ou sur http://youtube.com ou encore www.koakdesign.info"
Debug TextToURL(Buffer)

Buffer = "https://www.youtube.com/?hl=fr&gl=FR http://youtube.com ou encore www.koakdesign.info"
Debug TextToURL(Buffer)

Buffer = "Cliques sur ce lien www.koakdesign.info"
Debug TextToURL(Buffer)

Buffer = "Cliques"
Debug TextToURL(Buffer)
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Insérer des basiles href et target= "_blank" dans un tex

Message par SPH »

je ne sais pas du tout si je suis hors sujet mais je voulais parler des ameliorations du tchat :

- Faire un /help
- Faire un note edit obligatoire !!
- retirer la visualisation des ip
- faire une balise de la grosseur des fonts
- changer la couleur des textes (SI c'est possible bien sur...)
- Interdire de prendre un pseudo deja pris!!!

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Répondre