Newsgroup: it.comp.lang.visual-basic
Titolo: Togliere i tag html

Ciao amici,
vorrei creare un programmino che legga un file in formato html e generi un
file txt con il contenuto testuale del file htm senza perņ i tag.
ESEMPIO:
dim buf as string
open "c:\test.htm" for input as #1
open "c:\test.txt" for output as #2
while not (eof(1))
line input #1, buf
<QUI SI DOVREBBE CREARE UN CODECE (MI AIUTATE A FARLO?) CHE CANCELLI QUESTI
CARATTERI DAL FILE TEST.TML
'<script[^>]*?>.*?</script>'si","'<[\/\!]*?[^<>]*?>'si
print #2, .......?
wend
close #1
close#2

close#2
La regola è che:
1)Il tag inizia per "<" e immediatamente attaccato c'e' il nome del
tag es. "<body ..."
La scritta "< body .."  viene letto come testo.
2) Il tag finisce ">"
A volte ci sono i tag di chiusura che iniziano tutti per "/"
es. <body></body>
Ciao, 
	Negus

 file txt con il contenuto testuale del file htm senza però i tag.
La prima che mi viene in mente: leggi carattere per carattere,
mantenendo un flag Boolean che ti dice se il carattere è da
stampare o meno. Se incontri un "<" lo metti a False e cominci
a scartare i caratteri, quando incontri un ">" lo rimetti a True
e accetti i caratteri seguenti.
Forse un metodo più efficiente potrebbe essere quello di
andare di Instr e Mid$, cercando alternativamente i due
marker...
Comunque sbaglierò, ma se ne è già parlato. Hai guglato un po' ?
Bye, G.

 ha scritto nel messaggio
news:b2ufgs$1h2fr0$1...@ID-108681.news.dfncis.de...


 Potresti farmi un esempio di codice come l'hai descritto tu?
Questo potrebbe essere il primo metodo; molto lento, ma ti
permette se necessario di filtarre altri caratteri eventualmente
presenti nel testo:
********************
Private Sub Command1_Click()
      Dim strHTML  As String
      Dim strPulita As String
      Dim N As Long
      Dim blnAccettaCar As Boolean
      Dim strUnCar As String
      strHTML = Text1.Text
      blnAccettaCar = True
      For N = 1 To Len(strHTML)
            strUnCar = Mid$(strHTML, N, 1)
            Select Case strUnCar
                  Case "<"
                        blnAccettaCar = False
                  Case ">"
                        blnAccettaCar = True
                  Case Else
                        If blnAccettaCar Then
                              strPulita = strPulita & strUnCar
                        End If
            End Select
      Next N
      Text1.Text = strPulita
End Sub
********************
Questo potrebbe essere un esempio del secondo metodo:
********************
Private Sub Command2_Click()
      Dim strHTML  As String
      Dim strPulita As String
      Dim PosInizioTesto As Long
      Dim PosFineTesto As Long
      Dim strInizio As String
      Dim strFine As String
      strInizio = "<"
      strFine = ">"
      strHTML = Text1.Text
      PosInizioTesto = 1
      PosFineTesto = 1
      Do
            If CBool(PosFineTesto) = False Then Exit Do
            PosInizioTesto = InStr(PosFineTesto, strHTML, strFine)
            If CBool(PosInizioTesto) Then
                  PosFineTesto = InStr(PosInizioTesto, strHTML, strInizio)
                  If CBool(PosFineTesto) Then
                        strPulita = strPulita & Mid$(strHTML, PosInizioTesto + 1, _
                        PosFineTesto - PosInizioTesto - 1)
                        PosInizioTesto = PosFineTesto
                  End If
            End If
      Loop
      Text1.Text = strPulita
End Sub
********************
Tieni presente che sono giusto un paio di bozze, non codice
corretto e rifinito.
Tra l'altro, dai un'aggiustata al quoting, per carità :-(
http://www.marco5x.net/usenet/quoting.php
Bye, G.

 ha scritto nel messaggio
news:b2ulrv$1gl1nh$1...@ID-108681.news.dfncis.de...


 Ok ti ringrazio molto per gli esempi.
De nada. Ma attento: ti dò tre post di tempo per leggere
e mettere in pratica i consigli sul quoting del link che ti ho
postato e che riporto.
Poi ti plonko senza pietà. >:-|
