Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Split testo e chiusura tag

    Salve ragazzi,
    sto cercando di scrivere una funzione che mi permetta di splittare il testo contenuto all'interno di un array su più pagine. Il mio problema è che, siccome il testo è formattato con tag html, non riesco a fare in modo che se una parte di questo è contenuto, ad esempio, in un tag [B] esso venga chiuso a fine pagina e riaperto sulla nuova possibilmente evitando di troncare il termine. Ho anche cercato nei precedenti post ma non sono riuscito a trovare molto, sapete darmi qualche consiglio?

    Saluti e grazie in anticipo a tutti

  2. #2
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541

    Re: Split testo e chiusura tag

    Originariamente inviato da Descendz
    Salve ragazzi,
    sto cercando di scrivere una funzione che mi permetta di splittare il testo contenuto all'interno di un array su più pagine. Il mio problema è che, siccome il testo è formattato con tag html, non riesco a fare in modo che se una parte di questo è contenuto, ad esempio, in un tag [B] esso venga chiuso a fine pagina e riaperto sulla nuova possibilmente evitando di troncare il termine. Ho anche cercato nei precedenti post ma non sono riuscito a trovare molto, sapete darmi qualche consiglio?

    Saluti e grazie in anticipo a tutti
    mi sa che purtroppo che poco da fare!!! o dovresti fare in modo che quando creano il testo fai mettere un particolare carattere in base al quale poi vai alla pagina successiva oppure non mi viene in mente nulla.

  3. #3
    Ciao Mexican,
    grazie della replica... una volta se non erro lessi nel forum che qualcuno aveva risolto il problema ma non riesco a recuperare quella discussione. In rete, invece, ho trovato questa funzione utile proprio per questo scopo ma è un mostro che il mio cervello si rifiuta di assimilare

    codice:
    	Function CloseOpenHTMLTags(sHTMLString)
    	sTagTypesToIgnore = "br,img,input,meta,link,hr,!--,!doctype"
      If Instr(Right(sHTMLString,Len(sHTMLString) - InStrRev(sHTMLString,"<")),">") = 0 _
      Then
        sHTMLString = Left(sHTMLString,InStrRev(sHTMLString,"<")-1)
      End IF
      sHTMLStringOrig = sHTMLString
      aHTMLTags = Split(sHTMLString,"<script")
      sHTMLString = aHTMLTags(0)
      For vA = 1 To UBound(aHTMLTags)
        'WScript.Echo aHTMLTags(vA)
        aNoScripts = Split(aHTMLTags(vA),"</script>")
        If Ubound(aNoScripts) > 0 Then sHTMLString = sHTMLString & aNoScripts(1)
      Next
      ReDim aHTMLTags(0)
      aHTMLTags = Split(sHTMLString,"<")
      For vA = 0 To UBound(aHTMLTags)
        If left(trim(sHTMLString),1) <> "<" And vA = 0 Then
        Else
          aIndividualHTMLTag = Split(aHTMLTags(vA))
          If Len(aHTMLTags(vA)) > 0 Then
            vTagFoundLoop = 0
            TagFound = False
            sClosingTag = ""
            Do Until TagFound
              If Len(aIndividualHTMLTag(vTagFoundLoop)) > 0 And _
              aIndividualHTMLTag(vTagFoundLoop) <> "/" Then
                aHTMLTags(vA) = sClosingTag & aIndividualHTMLTag(vTagFoundLoop)
                aJustTag = Split(aIndividualHTMLTag(vTagFoundLoop),">")
                aHTMLTags(vA) = trim(lcase(aJustTag(0)))
                TagFound = True
                Exit Do
              ElseIf Len(aIndividualHTMLTag(vTagFoundLoop)) > 0 And _
              aIndividualHTMLTag(vTagFoundLoop) = "/" Then
                sClosingTag = "/"
              End If
              vTagFoundLoop = vTagFoundLoop + 1
            Loop
          End If
          If Len(trim(aHTMLTags(vA))) > 0 And Len(trim(sHTMLTags)) > 0 Then _
          sHTMLTags = sHTMLTags & "," & aHTMLTags(vA)
          If Len(trim(aHTMLTags(vA))) > 0 And Len(trim(sHTMLTags)) = 0 Then _
          sHTMLTags = aHTMLTags(vA)
        End If
      Next
      aTagTypesToIgnore = Split(sTagTypesToIgnore,",")
      For Each vTagToIgnore In aTagTypesToIgnore
        sHTMLTags = Replace(sHTMLTags,vTagToIgnore & ",","")
        sHTMLTags = Replace(sHTMLTags,vTagToIgnore,"")
      Next
      ReDim aHTMLTags(0)
      aHTMLTags = Split(sHTMLTags,",")
      For vA = 0 To UBound(aHTMLTags)
        If InStr(aHTMLTags(vA), "/") = 0 And Len(aHTMLTags(vA)) > 0 Then
          For vB = vA+1 To UBound(aHTMLTags)
            If InStr(aHTMLTags(vB), "/") > 0 And _
            InStr(aHTMLTags(vB), aHTMLTags(vA)) > 0 Then
              aHTMLTags(vA) = ""
              aHTMLTags(vB) = ""
              Exit For
            End If
          Next
        Else
          aHTMLTags(vA) = ""
        End If
        If Len(Trim(aHTMLTags(vA))) > 0 And Len(sOpenHTMLTags) > 0 Then _
        sOpenHTMLTags = sOpenHTMLTags & "," & aHTMLTags(vA)
        If Len(Trim(aHTMLTags(vA))) > 0 And Len(sOpenHTMLTags) = 0 Then _
        sOpenHTMLTags = aHTMLTags(vA)
      Next
      ReDim aHTMLTags(0)
      aHTMLTags = Split(sOpenHTMLTags,",")
      For vA = UBound(aHTMLTags) To 0 Step -1
        sClosingTags = sClosingTags & "</" & aHTMLTags(vA) & ">"
      Next
      CloseOpenHTMLTags = sHTMLStringOrig & sClosingTags
    End Function

  4. #4
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541

    scusami

    ma diciamo che a te serve un editor html da inserire in asp.net giusto? perchè non ne usi uno fatto in .net??? freetextbox se non erro

  5. #5
    No forse mi sono spiegato male, non mi serve un editor html ... mi serve una funzione che leggendo un array all'interno del quale è memorizzata una stringa di testo lo divida in più parti da paginare successivamente per non avere una pagina troppo lunga (e fin qua non ci sarebbero problelmi)

    Qual'è il mio problema però:
    Avendo un array nel quale è contenuto un codice html con il quale è stato formattato il testo ho bisogno di una funzione che chiuda automaticamente il codice html prima che la stringa venga spezzata e, eventualmente, lo riapra quando in una successiva pagina ne viene visualizzato il resto.

    Facile a dirsi ... ma a farsi

  6. #6
    Utente di HTML.it L'avatar di mexican
    Registrato dal
    Oct 2001
    residenza
    cava de tirreni
    Messaggi
    3,541
    Originariamente inviato da Descendz
    No forse mi sono spiegato male, non mi serve un editor html ... mi serve una funzione che leggendo un array all'interno del quale è memorizzata una stringa di testo lo divida in più parti da paginare successivamente per non avere una pagina troppo lunga (e fin qua non ci sarebbero problelmi)

    Qual'è il mio problema però:
    Avendo un array nel quale è contenuto un codice html con il quale è stato formattato il testo ho bisogno di una funzione che chiuda automaticamente il codice html prima che la stringa venga spezzata e, eventualmente, lo riapra quando in una successiva pagina ne viene visualizzato il resto.

    Facile a dirsi ... ma a farsi
    si scusa era la risposta ad un'altro post :-)!!!
    cmq come detto sopra non credo si possa fare. a meno che non riesci a fare una funzione che partendo dalla fine della parte dove spezzi la pagina va a vedere dove c'è un carattere del tipo > e nelle il contenuto per poi crearti quello di chiusura....ma sarebbe da uscir pazzi credo. Mi sa che c'è poco da fare.

  7. #7
    Mi sa che hai ragione...basta asp... passo a .net!

  8. #8
    Originariamente inviato da Descendz
    Mi sa che hai ragione...basta asp... passo a .net!

    che vuol dire passi a .net?


    allora, facciamo una cosa...

    - scegli la parte di testo che vuoi tagliare
    - ci applichi sopra una regexp che cerchi tutti i tag html
    - ti sposti all'ultimo submatch trovato
    - se è un tag di apertura html, infondo al testo ci metti la chiusura corrispondente
    - altrimenti te ne freghi
    - stampi il testo


    e cmq, per far una cosa fatta bene in fase di inserimento del testo dovresti far dire all'amministratore in quale punto deve splittare la pagina.


    Altra soluzione,

    diciamo che un testo in una pagina non può essere lungo piu di 1000 caratteri...ti sposti al millesimo carattere del testo, e splitti il testo al primo < br > (vbcrlf, dipende) a destra o a sinistra del 1000 carattere (guarda quale dei due è piu vicino) e splitti su quell'indice (sempre controllando poi che ci sia da chiudere un tag html)
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  9. #9
    Beh grazie Santino ma le funzioni da svolgere erano chiare ... dovrebbero essere fatte le cose che dici ma il "passo a .net" è motivato proprio dal fatto che per fare una stringa del genere in asp devono essere scritte parecchie righe di codice senza contare che le regexp non sono proprio il mio forte!


    P.S.
    tra l'altro avevo gia trovato una regexp che serve a chiudere i tag o almeno dovrebbe:

    codice:
    </?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)/?>

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.