Toon posts:

[ASP] Aanpassen van teksten

Pagina: 1
Acties:

Verwijderd

Topicstarter
Sorry voor de wazige topic, maar ik zal het hieronder proberen te verduidelijken.

Ik heb een verklarende woordenlijst met woorden als:

- acuut
- acuut reuma
- allergie
- allergische rhinitis
- allergische vasculitis
- amnesie

Deze woorden staan met hun uitleg in een tabel in een database, en die laadt ik in 2 arrays van 290 waarden.

Nu heb ik ook een stuk tekst uit de database waarin een productomschrijving staat. Deze laadt ik als string. Ik had dus het idee om wanneer een woord(en) uit die string overeen komt met een woord uit de woordenlijst hij de string aanpast door een <a href=# title="hier de omschrijving van het woord">woord</a>.

Dit werkt in princiepe prima, maar niet in het geval van 'acuut' en 'acuut reuma'. Hij vind dus eerst het woord acuut en daarna het woordje reuma. Hoe kan ik dit nu het beste oplossen? Ik heb ook al naar reguliere expressies gekeken, maar dat lijkt me ook niet afdoende.

Hieronder mijn code:

ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
strReactie = "Weer zo'n rotwoord: allergische vasculitis"

strReactie = CBR_Words(strReactie)

Function CBR_Words(ByVal strYourString)
    Dim I, nCount
    
    nCount = 0
    
    Set objConnection = Server.Createobject("ADODB.connection")
    objConnection.open strOpenConnectionString
    
    objRS.Open "SELECT * FROM tabl_webcbg_woordenboek");", objConnection, 3, 3
    '-------------[ Array of CBG Words ]-----------------------
    if not objRS.EOF then
        while not objRS.EOF
            nCount = nCount + 1
            redim preserve LCASEarrCBGWords(nCount)
            redim preserve strUitleg(nCount)
            LCASEarrCBGWords(nCount) = lCase(objRS("woord"))
            strUitleg(nCount) = objRS("uitleg")
        objRS.MoveNext
        wend
    end if
    '-------------[ /Array of CBG Words ]-----------------------
    objRS.Close
    
    For i = 1 to nCount
        strYourString = Replace(strYourString,LCASEarrCBGWords(i), " <a href=# title='" & strUitleg(i) & "'>" & LCASEarrCBGWords(i) & "</a> ")
    Next
    
    CBR_Words = strYourString
End Function


Kan ik denken jullie op deze code voortborduren of niet?

  • Flard
  • Registratie: Februari 2001
  • Laatst online: 20-08 14:34
Theoretisch gezien zou je je array op volgorde van grote in moeten lezen... Ik weet niet precies wat voor database je hebt, maar het zou me niets verwonderen als je bijvoorbeeld kunt toevoegen aan je SQL-query: "ORDER BY Len(uitleg)" (volgens mij werkt dat i.i.g. bij Access databases.

Verder nog een detailtje:
er bestaan een aparte html-tag voor jouw uitleg: <ACRONYM>... ik weet alleen niet meer of het nou <ACRONYM TITLE="Uitleg"> of <ACRONYM NAME="Uitleg"> is...

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 22:52
als je regexpses gebruikt is dit wel op te lossen

je moet dan eerste 'acuut reuma' vervangen, en daarna 'acuut'

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


Verwijderd

Topicstarter
Ik heb al gebrobeerd te ordenen op lengte, maar probleem is dat tie dan eerst de woorden 'acuut reuma' zal vinden. En hij maakt dan zijn wijzigingen. Daarna komt het woordje 'acuut' en dat zal die dan weer vinden en hij zal dus weer zijn wijzigingen maken. Dat is juist het probleem.

Verwijderd

Topicstarter
Tampie, het hoeft namelijk niet vervangen te worden. Maar er komen a hrefs voor en na. Dus het woordje accuut blijft gewoon bestaan.

  • Flard
  • Registratie: Februari 2001
  • Laatst online: 20-08 14:34
Misschien is het een idee om de gezochte woorden met een spatie ervoor en erachter te zoeken... dus zoek bijvoorbeeld naar:
' acuut ' en vervang dat door ' <acronym>acuut</acronym> '

Verwijderd

Topicstarter
Dat zou dan geen verscheel zijn toch? ' acuut reuma ' vind tie dan toch net zo makkelijk?

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 22:52
Jawel SpaGroen, je vervangt 'acuut reuma' door '<a href="#">acuut reuma</a>'

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


  • Flard
  • Registratie: Februari 2001
  • Laatst online: 20-08 14:34
neej.... dan juist niet meer...

Stel je neemt de volgende zin:

'bla bla acuut bla bla acuut reuma'

dan zet je er eerst een spatie voor en achter

' bla bla acuut bla bla acuut reuma '

nu gaan we de lijst met woorden doorzoeken (het moet wel een lijst zijn gesorteerd op grootte)
als eerste komen we tegen: 'acuut reuma' (zoek dus naar: ' acuut reuma ')
dus dit gaan we vervangen:

' bla bla acuut bla bla <acronym>acuut reuma</acronym> '

dan gaan we door, en komen we 'reuma' tegen (zoek dus naar: ' acuut ')

' bla bla <acronym>acuut</acronym> bla bla <acronym>acuut reuma</acronym> '


ik hoop dat het een beetje duidelijk is...

Verwijderd

Topicstarter
Oh ja! Idd! Ikke is een beetje dom! Thanks! Goed idee, ga ik gelijk proberen!
Pagina: 1