webForumDet fria alternativet

Räkna tecken+html

ASP

14 svar · 634 visningar · startad av UrMe

Medlem sedan apr. 2001762 inlägg
Frågan#1

Jag har en post i en databas som ser ungefär ut så här:

<span class="text">saddasasddasdsa sda d asd asd</span><br /><br /><span class="text2">sad dsa asd sda asd asd asd dsa sda asd asd asd asd asd asd sa asd asd asd<br />asd asd asd das asd asd asd asd asda sda sa as asd<br />asd asd asd asd asd ads ads ad ad</span>

Jag är inte skyldig till hur datan sparas :)

Om det vill sig riktigt illa kan det ibland vara 3-4 <span> saker efter varandra utan egentlig anledning.

Det jag skulle vilja göra är att begränsa antalet tecken, t.ex:

Response.Write Left(rs("text"), 50)

Problemet med detta är ju att den räknar tecknen i <span> och <br /> etc. Går det på något enkelt sätt att räkna bara tecken som inte finns inom "<>" och räkna tecken inom "<>".

Eftersom jag vill ju inte skriva ut 10 tecken och de 10 tecknena är bara "<span clas"

Samtidigt vill jag inte räkna alla <span> <br> etc heller, eftersom de som är efter de 50 tecknen jag vill ha ut är ointressant.

För <span> måste ju ändå skrivas ut för att formatteringen ska bli rätt.

Hoppas någon förstår mitt dilemma ;)

Medlem sedan sep. 2003448 inlägg
#2

Blir krångligt med den kunskap jag besitter (inte så stor).. Ta och rensa på all html först och krymp strängen sedan då?

Medlem sedan juni 20019 519 inlägg
#3
Function newLeft(str,length)
  With New RegExp
    .Global = True
    .Pattern = "(<[^<>]*>)"
    str = .Replace(str, "")
  End With
  newLeft = Left(str & "",length)
End Function
Medlem sedan sep. 2003448 inlägg
#4

Typ så ja :D

Medlem sedan juni 20019 519 inlägg
#5

ändra "(<[^>]*>)" till "(<[^<>]*>)" ;)

Medlem sedan apr. 2001762 inlägg
#6

Det där fungerar ju :) Fast problemet är att jag vill ha tillbaka de html-taggar som behövs.

T.ex

Detta är min text i databasen:

<span class="rubrik">Min rubrik</span><br><br><span class="text">asd asd asd asd asd asd</span><br><span class="text">tjo tjo tjo tjo tjo tjo</span>

Om jag t.ex vill ha ut 20 tecken. Så ska det vara dessa:
"Min rubrik asd asd as"

Så långt funkar ju den funktionen, det jag vill göra nu är att lägga tillbaka html-taggarna som behövs.
"<span class="rubrik">Min rubrik</span><br><br><span class="text">asd asd as"
Vill att min "output" ska se ut som ovan om man väljer 20 tecken.

sista </span> går ju att lägga tillbaka "manuellt".

Men hur skulle man lösa detta? Går det att lösa? :)

Medlem sedan juni 20019 519 inlägg
#7

Du ska ju inte använda den för att spara till databasen.. bara när du läser av den på den plats du vill? gör någon egen [rubrik]Min Rubrik[/rubrik] och kör en replace på det? eller lägg det i en egen tabell i databasen? Annars kan man väl göra en Count funktion ... eller bryta din text efter en </span> ;)

Medlem sedan juni 20019 519 inlägg
#8
Function newLeft(str,length)
  Dim Header, Content
  With New RegExp
    .Global = True
    .Pattern = "(<span class=""rubrik"">[^<]*</span><br><br><span class=""text"">)(.*)"
    Header = .Replace(str, "$1")
    Content= .Replace(str,"$2")
    .Pattern = "(<[^<>]*>)"
    Content = Left(.Replace(Content,""),length) & "</span>"
  End With
  newLeft = Header & Content
End Function

Rätt klumpigt skrivit dock.. men fungera ;)... hoppas jag

Medlem sedan apr. 2001762 inlägg
#9

Nackdelen är att du inte vet själva "pattern", inte alltid att rubrik följt av två br och sedan klassen text kommer :(

Det blir nog en väldigt knepig funktion :) Kanske får kolla på en alternativ lösning.

Medlem sedan juni 20019 519 inlägg
#10

så... du vill ta bort alla taggar förutom <span.....> rätt?

Medlem sedan juni 20014 421 inlägg
#11

Nej, han vill räkna alla tecken som inte är html-kod om jag har uppfattat han rätt. Han vill alltså räkna de tecknen som besökaren på siten ser, inte tecknena som formaterar texte, dessa vill han dock ha kvar i utskriften.

Enligt min uppfattning ivf.

Edit ->
En lösning skulle ju kunna vara att först strippa bort alla taggar och räkna tecknena, sedan räkna alla tecken i taggarna som finns innan man ska bryta. Plussa på det senare värdet till det första värdet.

Medlem sedan juni 20019 519 inlägg
#12

colione skrev:

Nej, han vill räkna alla tecken som inte är html-kod om jag har uppfattat han rätt. Han vill alltså räkna de tecknen som besökaren på siten ser, inte tecknena som formaterar texte, dessa vill han dock ha kvar i utskriften.

Nej.. han vill behålla vissa taggar för sitt presentations lager.. så det är inte att bara rensar all html (vilket min första kod gjorde). Han vill behålla _vissa_ kodsuttar i början bara dom avslutas också efter x antal tecken?

Medlem sedan juni 20014 421 inlägg
#13

Ja? Läs mitt inlägg igen voigtann1. Det är ju det jag skriver. Han vill egentligen bara räkna tecknena som besökaren ser. Men han vill ha med html-taggarna i utskriften.

Medlem sedan apr. 2001762 inlägg
#14

Ja det är precis som colione skriver, och jag vill bara printa ut de html-taggar som har något att göra med de tecknen som användaren ser. Knepigt :)

Medlem sedan juni 20019 519 inlägg
#15

Kan väl göra som colione skrev... hämta ut de första 50 tecknen som finns i databasen.. räknar ut hur många avslut det finns kontra hur många "öppningar" av taggar det finns...

262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)