Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    191

    [VB6]Estrarre parte di codice da sorgente html...

    Ciao a tutti, ho un piccolo problema...
    Ho una textbox con al ptoprio interno questo codice html:
    codice:
    <TBODY>
    <TR class=rs2>
    <TH colSpan=3>Five-day forecast <SPAN>(Details)</SPAN></TH>
    <TD colSpan=2>
    <TR class=rs1>
    <TD>
    <H5>Tomorrow</H5>
    <DIV class=icon>Jan 12PM Rain</DIV></TD>
    <TD>
    <H5>Wednesday</H5>
    <DIV class=icon>Jan 13AM Rain</DIV></TD>
    <TD>
    <H5>Thursday</H5>
    <DIV class=icon>Jan 14Cloudy</DIV></TD>
    <TD>
    <H5>Friday</H5>
    <DIV class=icon>Jan 15Cloudy</DIV></TD>
    <TD>
    <H5>Saturday</H5>
    <DIV class=icon>Jan 16Fair</DIV></TD></TR>
    <TR class=rs1>
    <TD>
    Tramite questa funzione vado ad estrarre "Tommorrow", sfruttando il fatto che è compreso tra <H5></H5>...
    codice:
    html = Text1.Text
    'The start string.
    strStart = "<H5>"
    strEnd = "</H5>"
    
    
    lonPos = InStr(1, html, strStart, vbTextCompare)
    
    If lonPos > 0 Then
    
        lonPos = lonPos + Len(strStart)
        
        lonEnd = InStr(lonPos, html, strEnd, vbTextCompare)
        
        If lonEnd > 0 Then
    strEmail = Mid$(html, lonPos, lonEnd - lonPos)
            
    
            Text4.Text = strEmail
            
        End If
    Il mio probema è: adesso vorrei potere estrarre dall'html "Wednesday", soltanto che è compreso sempre tra <H5></H5> e quindi mi esce sempre fuori "Tomorrow"...Come posso fare per ottenere "Wednesday"?...Grazie mille a tutti...

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Devi fare in modo che la riga

    lonPos = InStr(1, html, strStart, vbTextCompare)

    non faccia partire la ricerca da 1 ma da lonPos+1 trovato in precedenza
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    191
    Hmm giusto, però come posso fare?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Utilizza una variabile al posto dell' 1
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    191
    Ma la variabile a cosa deve essere uguale? A "Tomorrow"?

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No ... una variabile numerica che indica da quale carattere cominciare a cercare.

    La prima volta sarà uguale a 1

    vstart = 1

    in modo che la Instr troverà la prima occorrenza di <H5> e poi sarà uguale a

    vstart = lonpos + 1

    per trovare la seconda occorrenza, e cosi' via.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    191
    se metto la varibiel = lonpos + 1 mi dà sempre tomorrow, se ci riclicco wednesday, se ci riclcicco, thursday, etc, però come faccio a fare venire subito wednesday?

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Se sei sicuro che sia la seconda occorrenza, esegui la funzione una volta e ignora il risultato ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Io sinceramente questo loop proprio non lo capisco, mi sembra un complicarsi la vita più del necessario, a meno che tu non voglia fare un esercizio per prova...

    Se devi estrarre i nomi dei giorni basta un semplice ciclo For/Next su un array:

    codice:
        Dim sAr() As String
        Dim i As Long
        Dim iPos As Long
        Dim sTmp As String
        Dim html As String
        
        html = Text1.Text
        
        sAr = Split(html, "<H5>")
        For i = 0 To UBound(sAr)
            iPos = InStr(sAr(i), "</H5>")
            If iPos > 0 Then
                sTmp = sTmp & vbCrLf & Mid$(sAr(i), 1, iPos - 1)
            End If
        Next i
    
        Debug.Print = sTmp
    ed ottieni

    codice:
    Tomorrow
    Wednesday
    Thursday
    Friday
    Saturday

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    191
    Grazie mille Oregon, grazie mille Gibra, siete due fenomeni, sono riuscito a risolvere tutto...Grazie Ancora...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.