Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Funzione Glossario

  1. #1

    Funzione Glossario

    Salve,
    sto cercando di creare una funzione glossario in ASP. Mi spiego meglio. Da un testo, memorizzato in una stringa, vorrei linkare alcune parole confrontandole con quelle presenti in una tabella (glossario) formata dai campi "ID", "lemma" e "definizione".
    Esistono funzioni eleganti in ASP per fare questa operazione?
    Grazie mille.

    Io un tempo facevo con queste tre funzioni, ma magari esiste un sistema più elegante:
    codice:
    '######################################################################
    '########  Funzione inserire il link al glossario in un testo  ########
    '######################################################################
    
    Function SostituisciGlossario(strMatchPattern, strPhrase)
       'create variables
        Dim objRegEx, Match, Matches, StrReturnStr
        'create instance of RegExp object
        Set objRegEx = New RegExp 
    
        'find all matches
        objRegEx.Global = True
        'set case insensitive
        objRegEx.IgnoreCase = True
        'set the pattern
        objRegEx.Pattern = strMatchPattern 
    
        'create the collection of matches
        Set Matches = objRegEx.Execute(strPhrase) 
    
        'print out all matches
        For Each Match in Matches
    		Parola = Mid(strPhrase, Match.FirstIndex+1, Len(strMatchPattern))
    		If Match.FirstIndex = 1 Then
    			blnPrima = True 'sono all'inizio della frase per cui mi va bene fare la sostituzione
    		Else 'altrimenti devo vedere il carattere precedente cos'è
    			ChrPrecedente = Mid(strPhrase, Match.FirstIndex, 1)
    			If (Asc(ChrPrecedente) >= 97 And Asc(ChrPrecedente) <= 122) Or (Asc(ChrPrecedente) >= 65 And Asc(ChrPrecedente) <= 90) Then
    				'in questo caso il carattere precedente è una lettera per cui non va bene che lo evidenzi
    				blnPrima = False
    			Else
    				blnPrima = True
    			End If
    		End If
    		If Match.FirstIndex = Len(strPhrase) Then
    			blnDopo = True 'vuol dire che è alla fine
    		Else
    			ChrSuccessivo = Mid(strPhrase, Match.FirstIndex + 1 + Len(Match.value) , 1)
    			If Len(ChrSuccessivo) > 0 Then
    				If (Asc(ChrSuccessivo) >= 97 And Asc(ChrSuccessivo) <= 122) Or (Asc(ChrSuccessivo) >= 65 And Asc(ChrSuccessivo) <= 90) Then
    					'il carattere successivo è una lettera, per cui non va bene
    					blnDopo = False
    				Else
    					blnDopo = True
    				End If
    			Else
    				blnDopo = True
    			End If
    		End If
    		If blnPrima = True And blnDopo = True Then
    			SostituisciGlossario = "" & Parola & ""
    		Else
    			SostituisciGlossario = Parola
    		End If
        Next
    
    End Function
    
    '######################################################################
    '############### Ricava l'ID del lemma dalla parola   #################
    '######################################################################
    Function FindLemma(Lemma)
    	If Not Lemma = "" Then
    		Dim objRSLemma, strSQL
    		Set objRSLemma = Server.CreateObject("ADODB.Recordset")
    		strSQL = "SELECT ID " &_
    					"FROM Glossario " &_
    					"WHERE Lemma = '" & Lemma & "'"
    		objRSLemma.Open strSQL, objConn, 3, 3
    		If Not objRSLemma.EOF Then
    			FindLemma = objRSLemma("ID")
    		End If
    		objRSLemma.Close
    		Set objRSLemma = Nothing
    	End If
    End Function
    
    '######################################################################
    '############### Vera funzione glossario              #################
    '######################################################################
    Function Glossario(Testo)
    	If Not Testo = "" Then
    		Dim objRSG, strSQL
    		Set objRSG = Server.CreateObject("ADODB.Recordset")
    		strSQL = "SELECT ID, Lemma " &_
    					"FROM Glossario"
    		objRSG.Open strSQL, objConn
    		If Not objRSG.EOF Then
    			Do While Not objRSG.EOF
    					Testo = Replace(Testo, objRSG("Titolo"), SostituisciGlossario(objRSG("Titolo"), Testo), 1, 1000, 1)
    					Glossario = Testo
    				objRSG.MoveNext
    			Loop
    		End If
    		objRSG.Close
    		Set objRSG = Nothing
    	End If
    End Function
    Enrico Frison
    El signore ghe da e suche a chi che no ga i porsei!

  2. #2
    Utente di HTML.it L'avatar di jonnyl
    Registrato dal
    Dec 2003
    Messaggi
    180
    Ops come non detto :P
    Kovalsky per gli amici.

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.