Newsgroup: it.comp.www.asp
Titolo: Funzione replace per evidenziare ricerca

Ciao a tutti ho ottimizzato una funzione che ho trovato per evidenziare le
parole immesse in un campo di ricerca. Ora ho un piccolo problema.Se trovo
le parole che ho immesso tipo "berlusconi politica", il codice me le trova e
le evidanzia come da mie preferenze.
Ma se per esempio la parola "berlusconi" che io ho immesso nel Recordset è
scitta con la "B" maiuscola, ossia "Berlusconi", mi viene sostituita ed
evidenziata con quella che ho inserito, quindi in definitiva il mio rs mi
viene restituito con la parola evidenziata ma minuscola!
Ex: io immetto nel campo ricerca "berlusconi politica"
Il mio Rs: Berlusconi è presidente del Milan...
Risultato: <b>berlusconi</b> è presidente del Milan
Non trovo una via di uscita....
Spero in voi
Alen
---------------
function doHighlight(str_text, str_words, format)
 dim arr_tmp, i, starttag, endtag
 select case format
  case "Bold"
   starttag = "<strong>"
   endtag = "</strong>"
  case "Italic"
   starttag = "<i>"
   endtag = "</i>"
  case "BoldItalic"
   starttag = "<strong><i>"
   endtag = "</i></strong>"
  case "Evidenzia"
   starttag = "<span style=""background=yellow"">"
   endtag = "</span>"
 end select
 arr_tmp = split(str_words, " ")
 for i = 0 to Ubound(arr_tmp)
  str_text = replace(str_text, arr_tmp(i),
starttag&arr_tmp(i)&endtag,1,-1,1)
 next
 doHighlight = str_text
end function

Tu avrai da una parte il testo nel record e dall'altra le parole della
ricerca. Quando individui nel record la parola corrispondente e modifichi la
tua stringa definitiva di output, devi stare attento a prendere la parola
originale del recordset e aggiungere le varie opzioni e non quella
utilizzata nella ricerca. Credo che l'unico motivo per quello che succede
possa essere questo. Che nella sostituzione utilizzi la parola della ricerca
anziché quella trovata nel record.
--
:: Massimiliano Mattei
:: Project Leader
:: E.xtranet V.irtual A.pplication

 Alen
Personalmente ti consiglio l'approcio al problema non con la funzione
stringa Replace, ma con le regular expression.
<%
frase="berlusconi politica, Berlusconi è il presidente del Milan..."
Dim RegEx
Set RegEx = New RegExp
RegEx.Global = True
RegEx.IgnoreCase = True
rPat = "berlusconi"
regEx.Pattern = rPat
Set matches = regEx.Execute(frase)
for each match in matches
 frase=replace(frase,match.Value,starttag & match.Value & endtag)
 next
Response.Write (frase)
%>
Non ho provato il codice... cmq ti consiglio lo studio delle regular
expression... ti facilitano notevolmente il lavoro.
Ciao
--
AZ

> Ciao a tutti ho ottimizzato una funzione che ho trovato [...]
Seeeeeeee....!!!
:-))))
...nixs..

 ha scritto nel messaggio
news:bdrrrq$100pa3$1...@ID-192116.news.dfncis.de...
Non avevo pensato alle REG ESPRESSIONS, ma non comosco molto la sintassi.
Ho provato a montare il tuo codice ed effettivamente funziona, ma se metto
due parole non adiacenti allora no.
Dovrei fare uno SPLIT sugli spazi, ma non so se si può fare con le REG ESP.
Ecco il cod.
--------------
Mi dovrebbe evidenziare si Berlusconi che il ma niente.
Se faccio solo berlusconi alora si
Non è che mi puoi passare qualche link sull'argomento.
Io ne ho uso per javscript ma penso che non sia uguale.
Ciao e grazie...intanto provo...
--------------
function doHighlight(str_text, str_words, format)
 dim arr_tmp, i, starttag, endtag
 select case format
  case "Bold"
   starttag = "<strong>"
   endtag = "</strong>"
  case "Italic"
   starttag = "<i>"
   endtag = "</i>"
  case "BoldItalic"
   starttag = "<strong><i>"
   endtag = "</i></strong>"
  case "Evidenzia"
   starttag = "<span style=""background=yellow"">"
   endtag = "</span>"
 end select
 Set RegEx = New RegExp
 RegEx.Global = True
 RegEx.IgnoreCase = True
 regEx.Pattern = str_words
 Set matches = regEx.Execute(str_text)
 for each match in matches
   str_text = replace(str_text,match.Value,starttag&match.Value&endtag)
 next
 doHighlight = str_text
end function
frase = ("berlusconi politica, Berlusconi è il presidente del Milan...")
str_words = ("berlusconi il")
response.write doHighlight(frase,str_words,"Evidenzia")
%>
----------------

 Ciao e grazie...intanto provo...
Facci sapé! :)
Ciao
--
AZ