[ASP]: String afkappen

Pagina: 1
Acties:
  • 104 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • J.apiooo
  • Registratie: Oktober 2000
  • Laatst online: 17-06 11:28
Het afkappen van een string na een bepaald aantal karakters kan prima (via bijvoorbeeld (Left(sometext, 200)).

Echter, dit gaat fout wanneer er bijvoorbeeld images in de string zitten. Hoe kan ik dit beter aanpakken (het betreft nieuwsberichten). Een mogelijkheid is ook om woorden te tellen, maar volgens mij gaat het ook dan bij images verkeerd. Of is de enige oplossing om simpelweg geen images meer te gebruiken?

Jaap


Acties:
  • 0 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
Hoe staan images in die string? Als HTML <img> of als binaire data?
Welke methoden heb je in ASP om bv op <> te zoeken?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Acties:
  • 0 Henk 'm!

Verwijderd

je zou via een reguliere expressie alle html-tags eruit kunnen filteren, of juist alleen de image-tags. Deze string die je dan overhoudt kan je op de gewenste lengte afkappen, kijk wel uit dat je niet midden in een woord afkapt; dat staat zo leli ;)

Acties:
  • 0 Henk 'm!

  • J.apiooo
  • Registratie: Oktober 2000
  • Laatst online: 17-06 11:28
De images zijn gewoon als HTML in de string opgenomen.

Ik zou deze reguliere HTML-expressies er wel uit kunnen filteren inderdaad. Maar hoe kan ik 'm dan 'op de gewenste lengte' afkappen. De Left-functie maakt het alleen maar mogelijk om een kakrakteraantal op te geven, waarna de string wordt afgekapt.

Jaap


Acties:
  • 0 Henk 'm!

Verwijderd

in pseudeASP
code:
1
2
3
4
dim strNewsText

strNewsText = fnctRemoveHTML(objRs("strNewsBody"))
strNewsText = Left(strNewsText,200)

Zoiets?

Daarmee weet je alleen nog niet of je een woord hebt afgekapt.

Acties:
  • 0 Henk 'm!

  • J.apiooo
  • Registratie: Oktober 2000
  • Laatst online: 17-06 11:28
Dan moet alleen die functie nog gedefineerd worden... toch?

Jaap


Acties:
  • 0 Henk 'm!

Verwijderd

ja, die moet je nog ff maken. Succes.

Acties:
  • 0 Henk 'm!

Verwijderd

Hier een stukje code om teksten netjes af te kappen.

code:
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
' Returns first portion of the text up to nChars characters
' Returns only whole words when possible
'
' strText - text
' nChars - number of characters to limit preview to
'
Function StripText(strText, nChars)
    Dim nPos

        ' Uncomment next line to replace line breaks with spaces
    ' strText = Replace(strText, vbCrLf, " ")

    ' Check if it's longer than limit
        If Len(strText) > nChars And nChars > 4 Then
            ' Find the end of last whole word that we can use
            nPos = InStrRev(Left(strText, nChars - 3), " ")

            If nPos > 0 Then
            ' Take whole words only 
                    StripText = Left(strText, nPos) & "..."
            Else
            ' No spaces were found - take what we can
                    StripText = Left(strText, nChars - 4) & " ..."
            End If
        Else
        ' Take nChars from the text
            StripText = Left(strText, nChars)
        End If
End Function

Acties:
  • 0 Henk 'm!

  • J.apiooo
  • Registratie: Oktober 2000
  • Laatst online: 17-06 11:28
Prima. Bedankt... ik heb er snel ff convert script voor geschreven. LOL. Het werkt nu in elk geval, maar heeft nog wat finetuning nodig ;) Gaat vast wel goedkomen. Ideeën zijn altijd welkom.

<%
Function fnctRemoveHTML(strTemp)

strTemp = Replace(strTemp, "<", "")
strTemp = Replace(strTemp, ">", "")

fnctRemoveHTML = strTemp

End Function
%>

Jaap


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 14 augustus 2002 @ 14:48:
Hier een stukje code om teksten netjes af te kappen.

code:
1
...
Leuk stukje code, alleen zou ik de replace voor linebreaks helemaal achteraan doen, want dan heb je mogelijkerwijs een kortere string dus zal de replace sneller zijn. 't Zal over het algemeen weinig uitmaken, maar goed ... alle kleine beetjes helpen.

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Met de code die jij toepast verwijder je niet de html hoor. Daarmee verwijder je alleen De < en de > maar niet wat daartussen staat

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

Verwijderd

J.apiooo schreef op 14 augustus 2002 @ 14:53:
Prima. Bedankt... ik heb er snel ff convert script voor geschreven. LOL. Het werkt nu in elk geval, maar heeft nog wat finetuning nodig ;) Gaat vast wel goedkomen. Ideeën zijn altijd welkom.

<%
Function fnctRemoveHTML(strTemp)

strTemp = Replace(strTemp, "<", "")
strTemp = Replace(strTemp, ">", "")

fnctRemoveHTML = strTemp

End Function
%>
zo wordt de volgende string "[img]'/img/plaatje.gif'[/img]" toch "<img border='0' src='/img/plaatje.gif'"? lijkt me niet dat je dat wil toch???

Acties:
  • 0 Henk 'm!

  • J.apiooo
  • Registratie: Oktober 2000
  • Laatst online: 17-06 11:28
Hey, thanks!! Ik ga ermee bezig! Tuurlijk verwijderde die kleine Function alleen de < en >, maar het was om te testen of het dan wel werkte.

Dat script kapt teksten idd af, maar filtert de HTML-expressies nog niet. Is daar een standaard aanpak voor, bijvoorbeeld om alles tussen het beginhaakje (<) en het eindhaakje (>) niet weer te geven of op te nemen in de string?

Jaap


Acties:
  • 0 Henk 'm!

Verwijderd

Er is zeker een standaard aanpak hiervoor: analyze!

Zo zouden jou denkstappen eruit kunnen zien:

Probleemstelling: Er staan plaatjes als HTML in mijn string, en die wil ik eruit hebben
Analyze:
1) hoe kan ik die img tags eruit halen?
antw: ik kan zoeken naar de substring "<IMG" en vervolgens alle tekens daarna scannen totdat ik een ">" teken tegenkom. Alles wat daartussen staat moet dus verwijdered worden.

2) zijn er nog problemen hierbij?
antw:
- ik moet zowel hoofd- als kleine letters accepteren
- er zou eventueel een slecht gevorde image tag in kunnen staan, bijv. <img dadasda>. Moet ik dit ook filteren?
- etc.

Oplossing:
Hoe kan ik het best naar substrings en patronen gaan zoeken in een string?
1) reguliere expressies
2) zelf door de string gaan loop-en, en proberen de IMG tags eruit te filteren

Als je geen reguliere expressies kent zul je eventjes op http://msdn.microsoft.com/scripting moeten zoeken daarnaar, of anders voor oplossing 2 kiezen.

Succes :)

BTW: ik kies duidelijk om je geen source code te geven omdat dan het leereffect helemaal weg zou gaan.

Acties:
  • 0 Henk 'm!

  • J.apiooo
  • Registratie: Oktober 2000
  • Laatst online: 17-06 11:28
Bedankt, Ruud.

Ik ga ermee bezig en kom terug zodra ie werkt (oh oh.. wat beloof ik nu? :))

Jaap

Pagina: 1