Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Meilleur solution : recuperation d'une page web + """

2 réponses
Avatar
Bernardo
Bonjour,

Dans mon appli je fais appel à winsock pour charger une page web,
ensuite les données doivent être traitées.

Le soucis est que la page chargée au format txt contient des "&amp" et
des "&quot" (entre autres, pour les caractères accentuées). Je dois
donc convertir les chaînes.

La fonction REPLACE est t'elle la plus adaptée ?
Que me conseillez-vous pour résoudre le problème de conversion ?

Merci bien.

2 réponses

Avatar
Jean-Marc
"Bernardo" a écrit dans le message de
news:
Bonjour,

Dans mon appli je fais appel à winsock pour charger une page web,
ensuite les données doivent être traitées.

Le soucis est que la page chargée au format txt contient des "&amp" et
des "&quot" (entre autres, pour les caractères accentuées). Je dois
donc convertir les chaînes.

La fonction REPLACE est t'elle la plus adaptée ?
Que me conseillez-vous pour résoudre le problème de conversion ?





Hello,

Dans ce cas, la fonction Replace() est effectivement bien adaptée. Tu
peux utilement construire une petite table contenant les séquences à
remplacer et le caractère de remplacement, pour pouvoir traiter tous
les remplacements à l'aide d'une simple boucle, comme ceci:

' 8<------------------------------------------------------------------
Option Explicit
Const MAX_HTML_SIGN As Long = 128

' Remplace les caractères spéciaux HTML par le
' caractère correspondant
' voir http://www.commentcamarche.net/html/htmlcarac.php3 pour
' une table complète.
'
' Cette fonction retourne toujours True
'
Function SubstSpecHtmlCar(ByVal szBufferIn As String, _
ByRef szBufferOut As String) As Boolean
Dim t(MAX_HTML_SIGN, 2) As String
Dim i As Long
Dim nombre_signe As Long

t(1, 1) = "&quot;"
t(1, 2) = Chr$(34)
t(2, 1) = "&amp;"
t(2, 2) = "&"
t(3, 1) = "&lt;"
t(3, 2) = "<"
t(4, 1) = "&gt;"
t(4, 2) = ">"
nombre_signe = 4 ' 4 ici pour l'exemple

szBufferOut = szBufferIn

For i = 1 To nombre_signe
szBufferOut = Replace(szBufferOut, t(i, 1), t(i, 2))
Next i
SubstSpecHtmlCar = True
End Function


' test de la fonction
Private Sub Command1_Click()
Dim szBefore As String
Dim szAFter As String
Dim bRet As Boolean

szBefore = ""
szBefore = szBefore & "<html><body>"
szBefore = szBefore & " <p>voici un signe inférieur : &lt;"
szBefore = szBefore & " <p>voici un signe supérieur : &gt;"
szBefore = szBefore & " <p>voici un signe ampersand : &amp;"
szBefore = szBefore & "</body></html>"

Debug.Print "Avant : " & szBefore & vbCrLf & "----"
bRet = SubstSpecHtmlCar(szBefore, szAFter)
Debug.Print "Apres : " & szAFter & vbCrLf & "----"

End Sub

' 8<------------------------------------------------------------------

et une petite page html pour les tests:

http://myjmnhome.dyndns.org/caracspec.html" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://myjmnhome.dyndns.org/caracspec.html

--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Avatar
Bernardo
> "Bernardo" a écrit dans le message de



Hello,

Dans ce cas, la fonction Replace() est effectivement bien adaptée



Ok merci. Dommage qu'il n'existe pas une fonction ou une api.