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.
Function newLeft(str,length)
With New RegExp
.Global = True
.Pattern = "(<[^<>]*>)"
str = .Replace(str, "")
End With
newLeft = Left(str & "",length)
End Function
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".
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>
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
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.
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?
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.
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...
272 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a