Jeg har en lang tekststreng i en variabel som er defineret som kaldes strContent. Denne trækkes ud fra en tabel. Jeg har så en anden tabel hvor der er 2 kolonner, det ene indholder et ord, det andet en beskrivelse om dette ord.
Jeg ønsker så en funktion at når strContent udskrives bliver der checket om et ord fra den anden tabel er indholdt i denne, en slags opslagsfunktion skal jeg i princippet bruges.
Ex.
strContent='Jeg har en hest der hedder Benny'
Hvis ordet hest eksisterer i den anden tabel skal strContent laves til:
strContent='Jeg har en <a href='link'>hest</a> der hedder Benny'
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Det virker og er afprøvet. Dog vil jeg sige at du skal huske at have link med i din tabel i DB med ord, for ellers vil den jo ikke sætte et bestemt link ind til hvert ord. Hvis det skal være det samme link hver gang, er det selvføligelig ligemeget.
Husk at connecte til DB. Har jeg ikke med i eksemplet. :)
ok, tak for info, men skal stadigvæk bruge det i asp :)
Lige en ting mere der er væsentlig her:
I den tabel der indeholder alle ord skal scriptet tjekke om et af dísse ord indeholdes i strContent.
Det er mest databaseopslaget jeg er interesseret i, jeg bruger allerede replace :)
I princippet skal jeg vel tjekke hvetr ord i variablen strContent, tjekke om det eksisterer i "ordtabellen", hvis det gør skal det laves til et link. Men hvis jeg skal gøre dette kunne jeg forestille mig at det ville give serveren et stort load ? :)
ahh, ok, fandt ud af det, dog tror jeg scriptet er lidt belastende for serveren, så hvis nogen har et optimeret forslag hører jeg meget gerne dette :)
sql="select menu_short from ordbog" Set RS = Conn.Execute(SQL) If Not rs.EOF Then rs.MoveFirst Do While Not rs.EOF strContent = replace(strContent, " " & rs("menu_short") & " ", " <b>" & rs("menu_short") & "</b> ", 1, -1, 1) rs.MoveNext Loop End If
Følgende: WHERE menu_short LIKE '%" & strContent & "%' sørger for kun at vælge ord, som er indeholdt i strContent.
Dim sMenuShort Set rs = Conn.Execute("SELECT menu_short FROM ordbog WHERE menu_short LIKE '%" & strContent & "%'") Do While Not rs.EOF sMenuShort = rs("menu_short") strContent = replace(strContent, " " & sMenuShort & " ", " <b>" & sMenuShort & "</b> ") rs.MoveNext Loop
Bemærk dog, at fordi du også tjekker på mellemrum før og efter ordet, vil den ikke fange ordet, hvis det står først eller sidst i en sætning, eller der er et komma efter, o.lign. Måske vil den heller ikke fange det, hvis det har stort begyndelsesbogstav.
Det er bare ikke særlig hensigts-mæssigt, hvis der er 100 ord. Og samtidig skal de smids ind manuelt. P.t. ligger de i en DB. Det faktum burde kunne udnyttes. Så skal man lave en parser som går igennem DB, laver at array med ordene i og så sætte dem ind i en replace. Det kan man sagtens jo :)
Der kommer selvfølgelig an på hvor mange emner der skal replaces, det fremgår ikke, som jeg ser det, af spørgsmålet.
Dit løsningsforslag kan naturligvis være vejen frem, men der skal ikke mange hits til, før serverload kan blive kritisk, hvis %LIKE% anvendes i regulære forespørgsler.
Det kan være random hvor mange ord der skal replaces, ex.:
I den ene tabel er følgende tekst ex.:
Jeg har en hest der hedder Benny og en ko der hedder Kurt. En hest og ko er dejlige dyr når man bor på en bondegård...
Lad os så sige at i den anden tabel forekommer der ordene: hest, ko.
Outputtet skal der så være således:
Jeg har en <a href='link'>hest</a> der hedder Benny og en <a href='link'>ko</a> der hedder Kurt. En hest og ko er dejlige dyr når man bor på en bondegård...
Bemærk at det kun er første forekomst af ordet der skal laves om til et link, håber dette giver forståelse :)
Okay, så begynder du virkelig at gøre det tricky, hvis du kun skal erstatte ordet 1 bestemt sted i en sætning. Det ved jeg sgu ikke lige helt hvordan, eller om det overhovedet kan lade sig gøre. Måske ved at lave et array med de fundne ord, og så kun lave en replace på array[0]. Altså det først-fundne ord.
Men det må du have en ASP gut til at hjælpe dig med :)
er det kun første forekomst der vil blive replaced.
Jeg anvender lignende på eget website, hvor en ordbog (med data fra en db) inkluderes i en artikelsektion, og viser beskrivelse for en sætning eller ord ved MouseOver...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.