Newsgroup: it.lavoro.professioni.webmaster
Titolo: [ASP] creare link automatico di determinate parole chiave

Ciao, ho una domanda:
ho un sito in ASP dove compaiono dei testi estratti da database.
E' possibile fare in modo che da questi testi, in caso di alcune "parole 
chiave" da me decise (magari creando una tabella nel database?), vengano 
creati in automatico dei link ad altre sezioni del sito?
Qualche link da proporre? (non uso .net)
grazie 
Ciao Mark
-- 
Annulla IL GOL per contattarmi in privato

creati in automatico dei link ad altre sezioni del sito?
premesso che c'è uno specifico ng su asp (it.comp.www.asp), be', sì, è
possibile.  direi che si tratta di fare un replace.  così ad occhio
vedo due possibilità: o lo fai direttamente quando recuperi il testo e
lo spari a schermo o lo fai a priori una tantum nel database.
il secondo modo (modificare il testo nel db per linkare le parole) mi
pare migliore come impiego delle risorse anche se così, prima facie
(oggi mi sento latinista), credo ci sarebbe qualche complicazione se
decidessi di cambiare il link.  niente di insormontabile comunque.
nel primo caso potresti crearti una tabella con due campi, parole
chiave e link.  dopodiché fai qualcosa del genere:
[codice che recupera il testo dal db e lo assegna alla variabile
vTesto]
[codice che recupera il contenuto della tabella parole chiave-link e
lo assegna ad un recordset o un array, fai tu, uso il recordset per
fare prima]
do until rst.eof
   ParolaChiaveLinkata = "<a href=""" & rst("Link") & """>"
   ' poi se ci vuoi mettere un class o un target vedi tu
   ParolaChiaveLinkata = ParolaChiaveLinkata & rst("ParolaChiave")
   ParolaChiaveLinkata = "</a>"
   ' ho fatto tutto su più righe per chiarezza e per non andare a capo
   vTesto = replace(vTesto, rst("ParolaChiave"), ParolaChiaveLinkata)
   response.write vTesto
   rst.movenext
loop
questo metodo ha però un'indubbia falla e cioè che succede se, ad es.,
la parola chiave è "Orte" (località laziale) e il testo contiene
"tortellini"?  maiuscole-minuscole a parte otterresti qualcosa tipo
t<a href="pagina.html">orte</a>llini, osa che non vuoi.
allora dobbiamo trovare il modo di identificare una singola parola.
potremmo cercare ad es. chr(32) & "Orte" & chr(32) cioè
"[spazio]Orte[spazio]", ma questo escluderebbe i casi tipo " Orte,
Vetralla, ...", "... (Orte ha una stazione)", "(Orte, Vetralla)" ecc.
che tu vorresti sostituire.
così su due piedi non vedo altra soluzione che non quella di creare un
elenco di punteggiatori-delimitatori di parola, " .,;:-()?!", e fare
altri *due* cicli, tipo:
vDelimitatori = " .,;:-()?!"
' rst: recordset parole chiave - link
do until rst.eof
   for i = 1 to len(Delimitatori)
      for ii = 1 to len(Delimitatori)
         ParolaChiaveLinkata = mid(Delimitatori, i, 1)
         [poi come sopra]
         ParolaChiaveLinkata = ParolaChiaveLinkata & mid(Delimitatori,
ii, 1)
         ParolaChiave = mid(Delimitatori, i, 1)
         ParolaChiave = ParolaChiave & rst("ParolaChiave") 
         ParolaChiave = ParolaChiave & mid(Delimitatori, ii, 1) 
         vTesto = replace(vTesto, ParolaChiave, ParolaChiaveLinkata)
 
	next ii
   next i
   rst.movenext
loop
ora, mi pare chiaro che una cosa del genere non sarà il massimo in
quanto a prestazioni, ecco perché credo sia proprio meglio usare un
codice del genere per linkare le parole in anticipo modificando il
contenuto dei campi del db.
se decidessi di cambiare i link o di non linkare più certe parole,
probabilmente te la caverai con un replace ad hoc su tutti i record.
credo ti convenga anche fare una ricerca sulle regular expression.
da qui:
http://tinyurl.com/6ftdq
(asp replace "regular expression" su google)
ho trovato:
http://www.aspcode.it/articoli/articoli.asp?act1=show_art&idx=60
che non è proprio quello che dici tu, ma che ti potrebbe interessare.
-- 
riunioni: l'alternativa pratica al lavoro!
-- 
il mio indirizzo email è valido ma filtrato: aggiungete
la parola newsgroup nel subject se volete scrivermi.

    ParolaChiaveLinkata = "</a>"
Errorino delle 2. Sostituire l'ultima riga con ParolaChiaveLinkata =
ParolaChiaveLinkata & "</a>"

ParolaChiaveLinkata & "</a>"
ustia, ciai ragione...  (sono le due anche adesso... :-) )


 che non è proprio quello che dici tu, ma che ti potrebbe interessare.
Grazie, mi interessa eccome, il mio problema è che non sapevo esattamente
cosa cercare su google.
ciao Mark


 Ciao Mark
Andrea

c'è un qualche testo con cui decorare la parola.
occhio che potresti avere "(orte, ...)", quindi cercare solo chr(32) &
"orte" non basta.


 creati in automatico dei link ad altre sezioni del sito?
Per prigrizia non ti ho risposto prima ma ieri ho dovuto fare al volo
una funzione simile e te la passo!
Naturalmente la adatti ai dati estrapolati dai tuoi db.
In onore a Lbo, l'esempio č sulla parola Orte :)
<%
Function evidenzia(stringa, parola)
  Dim RegEx
  Set RegEx = New RegExp
  RegEx.Pattern = "(\W)(" & parola & ")(\W)"
  RegEx.Global = True
  RegEx.IgnoreCase = True
  evidenzia = RegEx.Replace(stringa, "$1" & "<a href=""link.asp?to=" &
"$2" & """>" & "$2" & "</a>" & "$3")
End Function
testoTest = "La consorte č andata ad Orte, ha con se la malasorte." &
VbCrLf
testoTest = testoTest & "Tante ortensie sul vie di Orte e tutte storte
le sue porte." & VbCrLf
testoTest = testoTest & "Orte ha il re e la sua corte, tutti ad Orte a
tirar le torte." & VbCrLf
testoTest = testoTest & "Anche se piccola č orte. con la O grande si
scrive, Orte." & VbCrLf
Response.Write Replace(evidenzia(testoTest, "orte"), VbCrLf, "<br />"
& VbCrLf)
%>
visuddhi

 visuddhi
Beh... non posso che ringraziare anche te!
Gią iniziato ad adattarlo. Speriamo di non fare danni..
Grazie Mark


 
Ma infatti cercando lo spazio prima l'unico rischio che a me viene in mente
è per le parole del tipo l'XXXX, dove non trova lo spazio ma l'apostrofo.


>  RegEx.Pattern = "(\W)(" & parola & ")(\W)"
alle regexp ci avevo pensato ma il \W mi mancava...  complimenti...
-- 
"Virus e spam sono rischiosi ma il vero pericolo sono i siti"
(ANSA, ott. 2004, citata da 
punto-informatico.it
)
