Evidenziare i risultati di una ricerca

di Paolo Pinto, in Classic ASP, UserScript, Misc,

Nella realizzazione di un sito, dovevo realizzare una pagina per la ricerca di un termine nel database di un glossario.
Avevo quindi la necessità di evidenziare la parola trovata all'interno di un testo in seguito a tale ricerca ed ho scritto una funzione che evidenzia la parola cercata.
Poichè il testo deve essere visualizzato all'interno di una pagina html, per evidenziare la parola ho utilizzato questo codice:

<span style='background-color: rgb(128,0,0); color:
rgb(255,255,255)'><B>testo da evidenziare</B></span>

Ecco in dettaglio il funzionamento di TxtInside:
1) txtSearch è la variabile che assumerà il valore corrispondente alla parola da cercare
2) txt è la variabile che conterrà il testo in cui cercare
3) txtInside è la variabile che conterrà il testo con i tag che evidenziano la parola cercata.

Il principio di funzionamento è il seguente:
1) si calcola la lunghezza del testo in cui cercare: len_txt=len(txt)
2) si calcola la lunghezza della parola da cercare: len_txtSearch = len(txtSearch) (quindi se la parola è 'mare' la variabile len_txtSearch = 4)
3) si crea un loop che 'scorre' tutta la frase alla ricerca della parola, il loop termina appena raggiunta la lunghezza massima della frase.
4) l'istruzione: txtExtracted = mid(txt,i,len_txtSearch) estrae da txt al variare di i tutte le stringhe di lunghezza len_txtSearch e le confronta con la parola cercata.
5) se la stringa in txtExtracted = txtSearch allora con l'istruzione: txtBefore = mid(txt, x, i-x) viene ricavata la stringa che precede.
6) se è stata effettivamente trovata la parola, allora la ricerca deve continuare dai caratteri che seguono questa parola, quindi ci si deve spostare in avanti di i+len_Search caratteri
7) in txtTemp viene memorizzata la somma delle stringhe txtBefore e txtEvid (il nostro testo con i tag html)
8) in txtInside ricorsivamente verranno uniti tutti i pezzi elaborati fino a ricreare l'intera frase di partenza.

Per usare la funzione è sufficiente richiamarla in questo modo (segue la funzione):

<%
 response.write TxtInside('prova', 'testo di prova per provare la funzione')

Function TxtInside(txtSearch,txt)

' Restituisce un testo formattato html, evidenziando una determinata parola
' Autore: Paolo Pinto
' email: paolo.pinto@galactica.it

Dim txtEvid
Dim i
Dim x
Dim txtTemp
Dim txtExtracted
Dim len_txt
Dim len_txtSearch

txtEvid = "<span style='background-color: rgb(128,0,0); color:
rgb(255,255,255)'><B>" & txtSearch & "</B></span>"
len_txt=len(txt)
len_txtSearch = len(txtSearch)

i=1
x=1
txtInside = ""
txtTemp = ""
do while i< len_txt+1

 txtExtracted = mid(txt,i,len_txtSearch)
 if ucase(txtExtracted) = ucase(txtSearch) then
  txtBefore = mid(txt, x, i-x)
  x=i+len_txtSearch
  txtTemp = txtBefore & txtEvid
  txtInside = txtInside & txtTemp
 end if
 i=i+1

loop

txtInside = txtInside & right(txt,len_txt-x+1)
if txtInside = "" then
    txtInside = txt
end if
end function

%>

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi