webForumDet fria alternativet

Byta ut bokstäver mot bilder

ASP

22 svar · 726 visningar · startad av magnusfeldth

Medlem sedan jan. 20034 480 inlägg
Frågan#1

En del sajter har ju bilder som bokstäver, med andra ord, de har en a.gif som ett A, b-gif som ett B och så vidare för att kunna skriva ut text från en databas och göra vissa textfält coolare.

En kod man kan använda är tex

 <%
Function Smiley(text)

text = server.HTMLEncode(text)
text = Replace(text,vbCrLf,"<br>")
text = Replace(text,"a","<img src=""a.gif"">")

osv...

Mina frågor är tre:
1, finns det nåt enklare sätt att göra detta på än att skriva in hela alfabetet?
2, Var kan jag hitta en lista på alla specialkoder för tecken som Å, Ä, Ö och paranteser och liknande?
3, Finns det nåt sätt man kan göra för att radbryta om ett ord är för långt? (som det är nu hamnar alla bokstäver som är för långt på nästa rad, men jag vill att hela det ordet skall radbrytas)

Medlem sedan juli 20015 107 inlägg
#2

Svar på tvåan kan jag ge delvis.

Å = & aring;
Ä = & auml;
Ö = & ouml;

(fast det ska inte vara mellanslag mellan & och t.ex ouml;)

Resten kan jag dessvärre inte svaret på, men tyckte det var bra att du tog upp det :) Jag är också intresserad utav svar på dina frågor :) *Håller tråden under bevakning*

Medlem sedan okt. 20005 273 inlägg
Medlem sedan jan. 20034 480 inlägg
#4

Löser den koden problem 3 också? Nån som testat? Kan man skippa vissa bokstäver utan prob? Tex ì kommer jag nog inte använda;)

Medlem sedan aug. 20003 575 inlägg
#5

Du skulle ju kunna lösa det med en for each loop.

Medlem sedan jan. 20032 285 inlägg
#6

Just nu är jag tyvärr för trött för att "bygga vidare" på Erik Juhlins kod, men jag tror nog att det här ska funka för alla problem. :)

str = "Här kan man ju då skriva en text som är över femtio tecken lång, för att demonstrera hur det fungerar."
str = LCase(str)

For i = 1 To Len(str) Step 50 ' 50 = Antalet bokstäver innan radbyte
  strTemp = strTemp & Mid(str, i, 50) & vbCrLf
Next

arr = Split(strTemp, vbCrLf)

For i = 0 To UBound(arr)
  For j = 1 To Len(arr(i))
    strLetter = Mid(arr(i), j, 1)

    Select Case strLetter
      Case "å"
        strImage = "aring.gif"
      Case "ä"
        strImage = "auml.gif"
      Case "ö"
        strImage = "ouml.gif"
      Case Else
        If Asc(strLetter) => 97 AND Asc(strLetter) <= 122 Then strImage = strLetter & ".gif"
    End Select

    If strImage <> "" Then
      Response.Write("<img src=""" & strImage & """>")
    Else
      Response.Write(strLetter)
    End If

    strImage = ""
  Next

  Response.Write("<br>" & vbCrLf)
Next

Den där koden gör bara om a-ö till bilder, om du vill ha andra tecken är det bara att lägga till dem i Select Case-satsen. Du fattar säkert hur, eller hur? ;)

Medlem sedan jan. 20034 480 inlägg
#7

Koden fungerar bra för att skriva ut bokstäverna, men den bryter fortfarande mitt i ord, tex "fungerar" kan bli

funger
ar

... hur löser man det?

Och när det gäller andra tecken, tex punkter och komman och så vidare, kan jag döpa dem till vad som helst och lägga in i select case?

Medlem sedan juni 200032 967 inlägg
#8

Det första problemet går säkert att lösa med css, så kika lite i det forumet.

Angående din andra fråga: Jajjenutt! :)

Mvh

Medlem sedan jan. 20034 480 inlägg
#9

Tyvärr, jag kan inte hitta nåt bra om radbrytning, har sökt både i asp-forumet och css-forumet...

Dessutom, hur gör jag " och / får lite prob med dem...

Medlem sedan juni 200032 967 inlägg
#10
Case """" ' citationstecken
     strImage="citat.gif"
Case "/"
     strImage="slash.gif"

Eller vad var det du menade?

Medlem sedan jan. 20034 480 inlägg
#11

Thanks, nu fungerar citattecknet (och snedstreck som jag hade råkat stava fel till bildfilen på)...

Nu återstår bara radbrytningen :)

Medlem sedan nov. 20017 144 inlägg
#12

/r :r

Medlem sedan nov. 20017 144 inlägg
#13
<span style="white-space: nowrap">Dina bokstäver</span>
Medlem sedan jan. 20034 480 inlägg
#14

Jesper T skrev:

<span style="white-space: nowrap">Dina bokstäver</span>

Var ska jag sätta in det här? Före och efter koden? :q

Medlem sedan nov. 20017 144 inlägg
#15

Tänk lite... ;)

Medlem sedan nov. 20017 144 inlägg
#16

Gissa?:
a.<%asp%> <span style="white-space: nowrap">Dina bokstäver</span>
b.<span style="white-space: nowrap">Dina bokstäver</span><%asp%>
c.<span style="white-space: nowrap"><%asp%></span>
:bla :e ;)

Medlem sedan jan. 20034 480 inlägg
#17

well, jag testade c, men det fungerar icke för mig... :(

Medlem sedan nov. 20017 144 inlägg
#18

Och som vanligt:
Vad fungerar inte?
Hur ser koden ut?

Medlem sedan jan. 20034 480 inlägg
#19

kod:

<span style="white-space: nowrap">
                 <% str = "Här kan man ju då skriva en text som är över femtio tecken långé|:/=, för att demonstrera hur det fungerar.123456 ()>-+"
str = LCase(str)

For i = 1 To Len(str) Step 32 ' 32 = Antalet bokstäver innan radbyte
  strTemp = strTemp & Mid(str, i, 32) & vbCrLf
Next

arr = Split(strTemp, vbCrLf)

For i = 0 To UBound(arr)
  For j = 1 To Len(arr(i))
    strLetter = Mid(arr(i), j, 1)

    Select Case strLetter
      Case "å"
        strImage = "images/letters/aring.gif"
      Case "ä"
        strImage = "images/letters/auml.gif"
      Case "ö"
        strImage = "images/letters/ouml.gif"
      Case "!"
        strImage = "images/letters/utrop.gif"
      Case "?"
        strImage = "images/letters/fraga.gif"
      Case "#"
        strImage = "images/letters/number.gif"
      Case "."
        strImage = "images/letters/punkt.gif"
      Case ","
        strImage = "images/letters/komma.gif"
      Case "+"
        strImage = "images/letters/plus.gif"
      Case "-"
        strImage = "images/letters/streck.gif"
      Case "<"
        strImage = "images/letters/hakvanster.gif"
      Case ">"
        strImage = "images/letters/hakhoger.gif"
      Case "("
        strImage = "images/letters/parantesvanster.gif"
      Case ")"
        strImage = "images/letters/paranteshoger.gif"
      Case "["
        strImage = "images/letters/hakparantesvanster.gif"
      Case "]"
        strImage = "images/letters/hakparanteshoger.gif"
      Case "0"
        strImage = "images/letters/0.gif"
      Case "1"
        strImage = "images/letters/1.gif"
      Case "2"
        strImage = "images/letters/2.gif"
      Case "3"
        strImage = "images/letters/3.gif"
      Case "4"
        strImage = "images/letters/4.gif"
      Case "5"
        strImage = "images/letters/5.gif"
      Case "6"
        strImage = "images/letters/6.gif"
      Case "7"
        strImage = "images/letters/7.gif"
      Case "8"
        strImage = "images/letters/8.gif"
      Case "9"
        strImage = "images/letters/9.gif"
      Case "é"
        strImage = "images/letters/accente.gif"
      Case "/"
        strImage = "images/letters/snedstreck.gif"
      Case "\"
        strImage = "images/letters/backslash.gif"
      Case "%"
        strImage = "images/letters/procent.gif"
      Case "*"
        strImage = "images/letters/star.gif"
      Case "'"
        strImage = "images/letters/accent.gif"
      Case "="
        strImage = "images/letters/likamed.gif"
      Case ":"
        strImage = "images/letters/kolon.gif"
      Case ";"
        strImage = "images/letters/semikolon.gif"
      Case "|"
        strImage = "images/letters/raktstreck.gif"
      Case """" 
        strImage = "images/letters/citat.gif"
      Case Else
        If Asc(strLetter) => 97 AND Asc(strLetter) <= 122 Then strImage = "images/letters/" & strLetter & ".gif"
    End Select

    If strImage <> "" Then
      Response.Write("<img src=""" & strImage & """>")
    Else
      Response.Write(strLetter)
    End If

    strImage = ""
  Next

  Response.Write("<br>" & vbCrLf)
Next%></span>

Fel: ingen skillnad från tidigare, alltså att den radbryter mitt i ord, och jag vill att hela ord skall vara intakta - ordet "fungerar" skall alltså inte brytas så att det står "funger" på ena raden och "ar" på andra raden...

Medlem sedan maj 200010 687 inlägg
#20

Man får väl gå in och styra upp det här... :OO

259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)