Avatar billede plato Juniormester
21. april 2006 - 11:27 Der er 20 kommentarer og
1 løsning

Problem med left(indhold),1

Hejsa NG.

For at korte ned for nogle tegn har jeg brugt følgende:
left(indhold),200.

Det giver dog nogle problemer hvis teksten indeholde nogle asp/html koder. Hvis antal tegn rammer midt i asp/html kode går der fuldstændig kludder i koden.
Se evt: http://www.filmnet.dk/test2/

Kan man løse det på en anden måde?
Avatar billede ldanielsen Nybegynder
21. april 2006 - 11:34 #1
For de første må det være left(indhold, 200) du mener, ikke?
Avatar billede ldanielsen Nybegynder
21. april 2006 - 11:46 #2
Left(indhold, InStr(200, indhold & ".", "."))

Den gør det at den finder det første punktum efter bogstav nr. 200. Hvis der ikke er noget punktum tager den resten af strengen, derfor indhold & "."

Dernæst vil jeg foreslå at du lægger hver artikel i en <td>, for så vil formateringstags ikke række ind i næste artikel.
Avatar billede cyberkox Nybegynder
21. april 2006 - 11:48 #3
Prøv at gøre sådan så

indhold = HTMLencode(indhold)
indhold = left(indhold, 200)

response.write indhold
Avatar billede ldanielsen Nybegynder
21. april 2006 - 11:49 #4
Jeg løber an på at der ikke er punktummer indeni tags'ene, jeg kan i hvert fald ikke komme i tanke om noget eksempel hvor der er.

Udover java script: <a onclick="document.body.style.backgroundColor = 'red';">, og det forekommer vel ikke?
Avatar billede ldanielsen Nybegynder
21. april 2006 - 11:52 #5
Det hedder Server.HTMLEncode, og den skifter bl.a. < ud med &lt; og > med &gt;

Så med den bliver HTML'en synlig ....
Avatar billede cyberkox Nybegynder
21. april 2006 - 11:54 #6
Ahh, det gik lige strækt nok, ja..

Ja, det er jeg godt klar over. Men er problemet ikk at hvis der fx er <table> i teksten, så ødelægger den vil hele siden ?

indhold = Server.HTMLEncode(indhold)
indhold = left(indhold, 200)

response.write indhold
Avatar billede plato Juniormester
21. april 2006 - 12:07 #7
Idanielsen.
Din kode. Hvordan kommer den ind her: (som faktisk er den rigtige kode.)
left(fncTextChange(indholdarray(i+1)),200)
Avatar billede plato Juniormester
21. april 2006 - 12:07 #8
Selve nyhederne er indeni <td></td>
Avatar billede plato Juniormester
21. april 2006 - 12:09 #9
Fejl i 21/04-2006 12:07:01

Det er denne her:
left(fncTextChange(indholdarray(i+3)),200)
Avatar billede ldanielsen Nybegynder
21. april 2006 - 12:14 #10
Jeg ville lave tre trin:

Dim strIndhold
strIndhold = fncTextChange(indholdarray(i+1))
strIndhold = Left(strIndhold , InStr(200, strIndhold & ".", "."))
strIndhold = Replace(Replace(strIndhold, "</t", "</xt"), "<t", "<xt")

Sidste linie sørger for at alle <table> bliver til <xtable>, <td> til <xtd>, </td> til </xtd> osv. så omtalte problem med <table> forsvinder. Men hvis indlæggene SKAL kunne indeholde tables, så dur det naturligvis ikke ...

- hvad er fncTextChange?
Avatar billede ldanielsen Nybegynder
21. april 2006 - 12:15 #11
Du kunne også bare anullere alle tags med

strIndhold = Replace(strIndhold, "<", "<x")
Avatar billede plato Juniormester
21. april 2006 - 12:16 #12
fncTextChange er denne her:
Function fncTextChange(strText)
strTekst = Trim(strText)
  fncTextChange = Replace(strTekst,"'","'")
  fncTextChange = Replace(fncTextChange,"""","""")
  fncTextChange = Replace(fncTextChange,"  "," &nbsp;")
  fncTextChange = Replace(fncTextChange,"&","&amp;")
  fncTextChange = Replace(fncTextChange,"-","&#45;")
  fncTextChange = Replace(fncTextChange,vbCrLf,"<br />")
  fncTextChange = Replace(fncTextChange,"å","&aring;")
  fncTextChange = Replace(fncTextChange,"æ","&aelig;")
  fncTextChange = Replace(fncTextChange,"ø","&oslash;")
  fncTextChange = Replace(fncTextChange,"Å","&Aring;")
  fncTextChange = Replace(fncTextChange,"Æ","&AElig;")
  fncTextChange = Replace(fncTextChange,"Ø","&Oslash;")
  fncTextChange = Replace(fncTextChange,"","<b>")
  fncTextChange = Replace(fncTextChange,"
","</b>")
  fncTextChange = Replace(fncTextChange,"","<i>")
  fncTextChange = Replace(fncTextChange,"
","</i>")
  fncTextChange = Replace(fncTextChange,"","<u>")
  fncTextChange = Replace(fncTextChange,"
","</u>")
End Function

Nyhederne skal indeholde <table><tr><td>

Her kommer hele koden for visning af nyheder:

<%
Function fncTextChange(strText)
strTekst = Trim(strText)
  fncTextChange = Replace(strTekst,"'","'")
  fncTextChange = Replace(fncTextChange,"""","""")
  fncTextChange = Replace(fncTextChange,"  "," &nbsp;")
  fncTextChange = Replace(fncTextChange,"&","&amp;")
  fncTextChange = Replace(fncTextChange,"-","&#45;")
  fncTextChange = Replace(fncTextChange,vbCrLf,"<br />")
  fncTextChange = Replace(fncTextChange,"å","&aring;")
  fncTextChange = Replace(fncTextChange,"æ","&aelig;")
  fncTextChange = Replace(fncTextChange,"ø","&oslash;")
  fncTextChange = Replace(fncTextChange,"Å","&Aring;")
  fncTextChange = Replace(fncTextChange,"Æ","&AElig;")
  fncTextChange = Replace(fncTextChange,"Ø","&Oslash;")
  fncTextChange = Replace(fncTextChange,"","<b>")
  fncTextChange = Replace(fncTextChange,"
","</b>")
  fncTextChange = Replace(fncTextChange,"","<i>")
  fncTextChange = Replace(fncTextChange,"
","</i>")
  fncTextChange = Replace(fncTextChange,"","<u>")
  fncTextChange = Replace(fncTextChange,"
","</u>")
End Function
Set rs = objConn.Execute("SELECT TOP 9  * FROM nyhedtemp WHERE active = True ORDER BY id DESC")
dim newsidarray(9)
dim recordarray(9)
dim picarray(9)
dim indholdarray(9)
i = 0

while not rs.eof
newsidarray(i) = rs("id")
recordarray(i) = rs("overskrift")
picarray(i) = rs("pic")
indholdarray(i) = rs("indhold")

i = i +1

rs.movenext

wend
i=0

            Response.Write"<table cellpadding='0' cellspacing='0' width='500'>" & vbcrlf
              Response.Write"<tr>" & vbcrlf
                Response.Write"<td colspan='2' class='nyhed_underline'>" & vbcrlf
                  Response.Write"<table cellpadding='0' cellspacing='0'>" & vbcrlf
                    Response.Write"<tr>" & vbcrlf
                      Response.Write"<td colspan='2' class='nyhed_top_overskrift'>" & recordarray(i+0) & "</td>" & vbcrlf
                    Response.Write"</tr>" & vbcrlf
                    Response.Write"<tr>" & vbcrlf
                      Response.Write"<td valign='top' class='nyhed_billede'><a href='/news.asp?mode=news_discuss&amp;id=" & newsidarray(i+0) & "' title='" & recordarray(i+0) & "'><img src='/newspics/" & picarray(i+0) & "' alt='Pic' border='0'></a></td>" & vbcrlf
                      Response.Write"<td class='nyhed_tekst'>" & fncTextChange(indholdarray(i+0)) & "</td>" & vbcrlf
                    Response.Write"</tr>" & vbcrlf
                  Response.Write"</table>" & vbcrlf
                Response.Write"</td>" & vbcrlf
              Response.Write"</tr>" & vbcrlf
for i =0 to 3
              Response.Write "<tr>" & vbcrlf
                Response.Write"<td valign='top' class='border_bottom'>" & vbcrlf
                  Response.Write"<table cellpadding='0' cellspacing='0'>" & vbcrlf
                    Response.write"<tr>" & vbcrlf
                      Response.write"<td class='nyhed_tekst_small' valign='top'><a href='/news.asp?mode=news_discuss&amp;id=" & newsidarray(i+1) & "' title='" & recordarray(i+1) & "'><img src='/newspics/" & picarray(i+1) & "' alt='Pic' width='50' border='0'></a></td>" & vbcrlf
                      Response.Write"<td class='nyhed_tekst_small' valign='top'><b>" & recordarray(i+1) & "</b><br><br>" & left(fncTextChange(indholdarray(i+3)),200) & "</td>" & vbcrlf
                    Response.write"</tr>" & vbcrlf
                  Response.Write"</table>" & vbcrlf
                Response.Write"</td>" & vbcrlf
                Response.write"<td valign='top' class='border_bottom'>" & vbcrlf
                  Response.Write"<table cellpadding='0' cellspacing='0'>" & vbcrlf
                    Response.Write"<tr>" & vbcrlf
                      Response.write"<td class='nyhed_tekst_small' valign='top'><a href='/news.asp?mode=news_discuss&amp;id=" & newsidarray(i+5) & "' title='" & recordarray(i+5) & "'><img src='/newspics/" & picarray(i+5) & "' alt='Pic' width='50' border='0'></a></td>" & vbcrlf
                  Response.Write"<td class='nyhed_tekst_small' valign='top'><b>" & recordarray(i+5) & "</b><br><br>" & left(fncTextChange(indholdarray(i+5)),200) & "</td>" & vbcrlf
                    Response.Write"</tr>" & vbcrlf
                  Response.Write"</table>" & vbcrlf
                Response.Write"</td>" & vbcrlf
              Response.Write"</tr>" & vbcrlf
next
            Response.Write"</table>" & vbcrlf
%>
Avatar billede plato Juniormester
21. april 2006 - 12:17 #13
21/04-2006 12:15:36 det giver problemer da teksten også indeholder sådan en linie:
<a href="redirect.asp?mode=movie&amp;Id=6400">
Avatar billede ldanielsen Nybegynder
21. april 2006 - 12:19 #14
OK

Så er den med punktummet måske nok?:

Dim strIndhold
strIndhold = fncTextChange(indholdarray(i+1))
strIndhold = Left(strIndhold , InStr(200, strIndhold & ".", "."))
Avatar billede ldanielsen Nybegynder
21. april 2006 - 12:20 #15
OK. Det kan jeg godt se ...
Avatar billede plato Juniormester
21. april 2006 - 12:23 #16
Prøver 21/04-2006 12:19:25

Og den skal vel bare komme efter:
Set rs = objConn.Execute("SELECT TOP 9  * FROM nyhedtemp WHERE active = True ORDER BY id DESC")
dim newsidarray(9)
dim recordarray(9)
dim picarray(9)
dim indholdarray(9)

Dim strIndhold
strIndhold = fncTextChange(indholdarray(i+1))
strIndhold = Left(strIndhold , InStr(200, strIndhold & ".", "."))
Avatar billede ldanielsen Nybegynder
21. april 2006 - 12:25 #17
Hvis vi nu antager at alle links peger på noget med .asp eller .htm, så gør sådan:

Dim strIndhold
strIndhold = fncTextChange(indholdarray(i+1))
strIndhold = Replace(Replace(strIndhold, ".asp", "§§§asp"), ".htm", "§§§htm")
strIndhold = Left(strIndhold , InStr(200, strIndhold & ".", "."))
strIndhold = Replace(Replace(strIndhold, "§§§asp", ".asp"), "§§§htm", ".htm")
Avatar billede plato Juniormester
21. april 2006 - 12:36 #18
Skal det se sådan ud:?

Set rs = objConn.Execute("SELECT TOP 9  * FROM nyhedtemp WHERE active = True ORDER BY id DESC")
dim newsidarray(9)
dim recordarray(9)
dim picarray(9)
dim indholdarray(9)
Dim strIndhold
strIndhold = fncTextChange(indholdarray(i+1))
strIndhold = Replace(Replace(strIndhold, ".asp", "§§§asp"), ".htm", "§§§htm")
strIndhold = Left(strIndhold , InStr(200, strIndhold & ".", "."))
strIndhold = Replace(Replace(strIndhold, "§§§asp", ".asp"), "§§§htm", ".htm")

Og skal jeg kalde denne her:
left(fncTextChange(indholdarray(i+3)),200)
med noget andet?
Avatar billede ldanielsen Nybegynder
21. april 2006 - 13:10 #19
Der hvor du nu skriver

Response.write "............." & left(fncTextChange(indholdarray(i+3)),200) & "....."

Skal du skrive fx.

strIndhold = fncTextChange(indholdarray(i+3))
strIndhold = Replace(Replace(strIndhold, ".asp", "§§§asp"), ".htm", "§§§htm")
strIndhold = Left(strIndhold , InStr(200, strIndhold & ".", "."))
strIndhold = Replace(Replace(strIndhold, "§§§asp", ".asp"), "§§§htm", ".htm")

Response.write "............." & strIndhold & "....."

Har du ikke selv lavet det?
Avatar billede plato Juniormester
21. april 2006 - 13:27 #20
Det virker. Tak for det.

Selve koden ovenfor har jeg fået hjælp til. Så har jeg derefter selv bygget den ud. Men så snart der kommer noget kode, ligesom det du har skrevet, er jeg ikke ferm til at sætte det ind.

Husk at smide et svar.
Avatar billede ldanielsen Nybegynder
21. april 2006 - 13:35 #21
Ok, godt det virker

God weekend
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester