Ja jeg kom selv til at tænke på samme problem.. Der skulle helst ikke kunne splittes mellem <> og </> som <b> og <a> fx.. Det vil ikke betyde så meget ved et <b> men et link kunne go godt begynde at drille så..
Det er fordi jeg har et cms system hvor, kunden kan skrive artikler ind. Hvor han kan indsætte billeder,links osv. Disse artikler skal så alt efter deres længde opdeles i flere afsnit, så der kan oprettes en slags paging.
Som sagt vanskeliggøres opgaven af at det ikke er alle tags der skal afsluttes. Da man samtidig kan have flere sæt tags inde i hinanden bliver det meget svært at dele det rigtige sted.
Kan man ikke forestille sig at brugeren selv indsætter et selvopfundet tag for sideskift? Man kunne evt kontrollere at dette tag findes for min. hver 500 tegn.
Hvis vi nu siger at brugeren har mulighed for, ved at klikke på et ikon, at indsætte et break i teksten "<dobreak>". Brugeren har mulighed for at indsætte x antal breaks.
Hvordan får jeg så opdelt udtrækket i x antal dele, og generet links til x antal sider (side 1, side 2 osv).
Function BreakCount (strTekst) dim n dim start dom pos
n = 0
if strTekst > "" then start = 1 pos = instr(start,strTekst,BREAK,1) while pos > 0 n = n + 1 start = pos + 1 + len(BREAK) ' søg igen efter BEAK pos = instr(start,strTekst,BREAK,1) wend end if BreakCount = n end function
Function GetPage (pageNum, strTekst ) dim n dim startPos dim slutPos dim strReturn
for n = 1 to PageNum slutpos = instr(startPos,strTekst,BREAK,1) if slutpos = 0 then slutpos = len(strTekst) end if strReturn = mid(strTekst,startpos, slutpos - startpos) startPos = slutPos + 1 + len(BREAK) next 'n GetPage = strReturn end function
while pos > 0 n = n + 1 start = pos + 1 + len(BREAK) ' søg igen efter BEAK pos = instr(start,strTekst,BREAK,1) wend end if BreakCount = n
Helt kanon.. Så kører det som det skal... Valgte dog lige at bruge et <hr name="dobreak"> istedet for, så kan brugeren selv tydeligt se skiftet inde i editoren.
Her er koden som den endte med at være :)
Const BREAK = "<hr name=""dobreak"">"
Function BreakCount (strTekst) dim n dim start dim pos
n = 0
if strTekst <> "" then start = 1 pos = instr(start,strTekst,BREAK,1) while pos > 0 n = n + 1 start = pos + len(BREAK) ' søg igen efter BEAK pos = instr(start,strTekst,BREAK,1) wend end if BreakCount = n end function
Function GetPage (pageNum, strTekst) dim n dim startPos startPos = pageNum dim slutPos dim strReturn
for n = 1 to PageNum slutpos = instr(startPos,strTekst,BREAK,1) if slutpos = 0 then slutpos = len(strTekst) end if strReturn = mid(strTekst,startpos, slutpos - startpos) startPos = slutPos + len(BREAK) next 'n GetPage = strReturn end function
If isNull(strTekst) then Response.Write(" ") Else RESPONSE.WRITE GetPage(page, strTekst) End If RESPONSE.WRITE "</td></tr>" RESPONSE.WRITE "<tr><td style='padding-top:10px'><p>" for n = 1 to int(Breakcount(strTekst)+1) RESPONSE.WRITE "<a href='artikler.asp?mode=detail&p_id="&ID&"&a_id="&a_id&"&page="&n&"'>[side "&n&"] </a>" next 'n RESPONSE.WRITE "</p>" RESPONSE.WRITE "</td></tr>"
Og mange tak for hjælpen!!!!!! her er dine fortjente points...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.