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".
Men hur skulle man lösa detta? Går det att lösa? :)
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...
262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2