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

    Problema codice sorgente spezzato

    Salve amici,
    ho realizzato un motore di ricerca interno al sito ma ho questo problema:
    i contenuti del sito vengono presi da un db e sono stati inseriti in codice html, quindi non sono testi semplici, ma contengono anche i tag!

    Quando eseguo la ricerca vorrei mostrare solo parte del testo, così faccio un

    left(contenuto, 200)

    però se un tag non si chiude, mi si scompiglia tuttala struttura del sito!!!

    Come posso risolvere il problema???
    Digital XP - The new expression of digital art! - http://www.mimanchitu.it

  2. #2
    Questo è un problema molto noto a noi sviluppatori.
    Alcuni preferiscono fare dei controlli, per non tagliare tag.
    Io personalmente preferisco evitare il codice html utilizzando massicciamente i css.

    Ma penso che l'idea più banale sia quella di privare la stringa del db di tutto ciò che sia compreso tra "<" e ">".

    Fammi sapere.
    Think global, act local.

  3. #3

  4. #4

    tu

    tu stesso non mi avevi risposto... avevo applicato il tuo script:

    pageGet = (storia.Fields.Item("TESTO").Value) 'record da DB con TAG HTML

    set re = Server.CreateObject("VBScript.RegExp")
    re.Pattern="<table cellspacing=""0"" cellpadding=""0"" border=""0"">\s+<tr>\s+<td class=""main-lbl"">([^<]*)</td>\s+</tr>\s+</table>\s+</td>\s+</tr>\s+<tr>\s+<td width=""10"" class=""main-lbl""></td>\s+<td class=""main-lbl-normal"">Categoria: <a[^>]+>([^<]*)</a></td>\s+</tr>\s+<tr>\s+<td width=""10"" class=""main-lbl""></td>\s+<td class=""main-lbl-normal"">\s+([^<]*)</br>\s+<a[^>]+>(\d+)</a>\s+([^<]+)<a[^>]+>([^<]+)</a>\s+
    \s+tel (\d+)\s+</td>"
    re.global=true
    re.Multiline=true
    set ris = re.Execute(pageGet)
    re.Pattern="\s+$" 'questa è per togliere gli spazi vuoti alla fine
    for each rr in ris
    set sm = rr.SubMatches
    for each ss in sm
    Response.Write re.Replace(ss,"") & "
    " & vbCrLf
    next
    Response.Write "<hr>"
    next

    ma non mi funzionava!
    Digital XP - The new expression of digital art! - http://www.mimanchitu.it

  5. #5

    Re: tu

    Originariamente inviato da iadream
    tu stesso non mi avevi risposto... avevo applicato il tuo script:

    pageGet = (storia.Fields.Item("TESTO").Value) 'record da DB con TAG HTML

    set re = Server.CreateObject("VBScript.RegExp")
    re.Pattern="<table cellspacing=""0"" cellpadding=""0"" border=""0"">\s+<tr>\s+<td class=""main-lbl"">([^<]*)</td>\s+</tr>\s+</table>\s+</td>\s+</tr>\s+<tr>\s+<td width=""10"" class=""main-lbl""></td>\s+<td class=""main-lbl-normal"">Categoria: <a[^>]+>([^<]*)</a></td>\s+</tr>\s+<tr>\s+<td width=""10"" class=""main-lbl""></td>\s+<td class=""main-lbl-normal"">\s+([^<]*)</br>\s+<a[^>]+>(\d+)</a>\s+([^<]+)<a[^>]+>([^<]+)</a>\s+
    \s+tel (\d+)\s+</td>"
    re.global=true
    re.Multiline=true
    set ris = re.Execute(pageGet)
    re.Pattern="\s+$" 'questa è per togliere gli spazi vuoti alla fine
    for each rr in ris
    set sm = rr.SubMatches
    for each ss in sm
    Response.Write re.Replace(ss,"") & "
    " & vbCrLf
    next
    Response.Write "<hr>"
    next

    ma non mi funzionava!

    quel tu perentorio devo dire mi ha fatto sussultare

    cmq a me funzionava

  6. #6

    ho risolto così

    Ciao ti ringrazio per l'interesse!

    Però ho risolto scrivendo così:

    <%
    function RemoveTags(txt)
    'memorizza il testo in un buffer temporaneo
    dim tmptxt
    tmptxt = txt

    'esci se viene passata una stringa nulla (che è diverso da stringa di lunghezza 0)
    if IsNull(tmptxt) then
    exit function
    end if

    dim i, pos1, pos2
    'inzia il ciclo di ricerca...
    do
    'cerca il prossimo inizio di tag
    pos1 = Instr(tmptxt, "<")
    'se non lo trovi esci dal ciclo di ricerca (non ci sono più tag da eliminare)
    if pos1=0 then
    exit do
    else
    'se lo trovi, cerca il simbolo di chiusura del tag
    pos2 = Instr(pos1, tmptxt, ">")
    'se non lo trovi esci dal ciclo di ricerca
    if pos2=0 then
    exit do
    else
    'elimina il tag determinato da pos1 e pos2
    tmptxt = Left(tmptxt, pos1-1)&Mid(tmptxt, pos2+1)
    end if
    end if
    loop
    'restituisci il testo "depurato" dai tag HTML
    RemoveTags = tmptxt
    end function
    %>

    <%
    Dim rawTxt
    rawTxt = (risultati.Fields.Item("CONTENUTO").Value)
    CONTENT = (RemoveTags(rawTxt))
    sostituto = "<span class=""evidenzia"">"&Request.querystring("PAROLA" )&"</span>"
    testo = replace(CONTENT,Request.querystring("PAROLA"),sost ituto,1,-1,1)
    %>

    E funziona perfettamente! Grazie ancora
    Digital XP - The new expression of digital art! - http://www.mimanchitu.it

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.