Meddelande

Minska
No announcement yet.

Korta ner länknamn

Minska
X
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Korta ner länknamn

    En funktion för att korta ner länknamn (inom <a>\</a>). Fungerar som webForums.
    [kod]Function ShortenLinkName(sHTML, lFirstLength, lLastLength)
    Dim objRegExp
    Set objRegExp = New RegExp
    objRegExp.Global = True
    objRegExp.IgnoreCase = True

    objRegExp.Pattern = "(<a [^>]+>)([\s\S]{" & lFirstLength & "}?)([\s\S]+?)([\s\S]{" & lLastLength & "}?)(</a>)"

    ShortenLinkName = objRegExp.Replace(sHTML, "$1$2...$4$5")
    Set objRegExp = Nothing
    End Function[/kod]wF lägger till mellanslag mellan > och ) så de får ni ta bort!

    GLHF - Good Luck Have Fun!
    Last edited by Erik Juhlin; 2005-05-12, 19:31.
    /Erik
    "My love for you is like a truck, BERSERKER"
    "Would you like some making f**k, BERSERKER"

  • #2
    Ok, en nybörjarfråga, hur får jag in den funktionen i den här koden?


    Kod:
    response.write "</td>"
    
    response.write "<td width=""70%"" valign=""top"">"
    
    
    strNyText = ""
    strText = rs("message")
    
    
    varArray = split (strText, " ")
    for i = 0 to ubound(varArray)
        strNyText = strNyText & Left(varArray( i ), 50) & " "
    next
    
    strComText = server.HTMLEncode(strNyText)
    strComText = Replace(strComText,vbcrlf,"<BR>")
    
    Response.Write strComText
    
    
    response.write "</td>"
    response.write "</tr>"
    response.write "</table>"
    end if
    
    response.write "<img src=""images/grafic/pixel_grey.gif"" width=""462"" height=""1""><br>"
    
    
    
    rs.movenext
    Count = Count + 1
    loop

    Kommentera


    • #3
      Om du har en text som innehåller länkar (t.ex. <a href="somewhere">asdf asdf asdf asdf asdf</a>) så skriver du bara:
      [kod]txt = ShortenLinkName(txt, 5, 5)[/kod]
      /Erik
      "My love for you is like a truck, BERSERKER"
      "Would you like some making f**k, BERSERKER"

      Kommentera


      • #4
        Nu hänger jag inte med på vad du svarade på Erik.

        Jag har forumkoden jag klistrade in där uppe i dagsläget, resultatet i forumet blir så här:

        http://www.skate.nu/forum_topic.asp?id=3316

        Istället vill jag att alla texter som börjar med www. eller http:// eller http://www. automatiskt ska bli länkar.

        och att alla långa länkar ska kortas så att man bara ser början och slutet med ... emellan.

        dessutom vill jag att alla långa ord typ "blablablablablablablablablablablablablablablablablabla" ska visas som "blablablablablabla....blablablablablabla".

        Går det genom att kombinera min kod ovanför och din funktion ovanför?

        Eftersom jag inte skrivit koden själv och inte förstår den så mycket, skulle det vara schysst om nån kan sammanfoga koderna och lägga allt komplett i en kodruta, klart att ersätta i min asp-fil.

        Lösa koder kommer jag inte riktigt veta var jag ska få in dem.

        Tack på förhand.

        Har du slutat skata förresten? Kommer ihåg din skatesida från back in the days.

        Kommentera


        • #5
          Kan kanske vara bra att starta en tråd på ASP forumet för din fråga men

          Använd Eriks:
          [kod]Function ShortenLinkName(sHTML, lFirstLength, lLastLength)
          Dim objRegExp
          Set objRegExp = New RegExp
          objRegExp.Global = True
          objRegExp.IgnoreCase = True

          objRegExp.Pattern = "(<a [^>]+>)([\s\S]{" & lFirstLength & "}?)([\s\S]+?)([\s\S]{" & lLastLength & "}?)(</a>)"

          ShortenLinkName = objRegExp.Replace(sHTML, "$1$2...$4$5")
          Set objRegExp = Nothing
          End Function[/kod]

          Och:
          [kod]Function LinkURL(str)
          Dim objRegExp, strTemp
          Set objRegExp = New RegExp

          objRegExp.IgnoreCase = True
          objRegExp.Global = True
          objRegExp.Pattern = "(\b(www\.|http\://)\S+\b)"
          strTemp = objRegExp.replace(str, "<a href=""http://$1"" target=""_new"">$1</A>")
          LinkURL = Replace(strTemp, "http://http://","http://")
          Set objRegExp = Nothing
          End Function[/kod](Kan skrivas bättre men hittade bara denna när jag googlade).

          Efter:
          [kod]strComText = server.HTMLEncode(strNyText)
          strComText = Replace(strComText,vbcrlf,"<BR>")[/kod]
          Skriver du:
          [kod]strComText = LinkURL(strComText)
          strComText = ShortenLinkName(strComText, 5, 5)[/kod]
          "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

          Kommentera


          • #6
            Kan starta en ny tråd där istället om ni föredrar det?

            Exakt var klistrar man in Functionkoderna, jag får felmeddelande när jag lägger in dem:

            "Microsoft VBScript compilation error '800a03ea'

            Syntax error

            /forum_topic_test.asp, line 246

            Function ShortenLinkName(sHTML, lFirstLength, lLastLength)"

            Kommentera


            • #7
              Starta gärna en ny tråd

              Men du försöker vad jag gissar på att du har båda funktionerna i din loop... Lägg dom längst upp innan du gör "Do until rs.EOF" eller i en egen fil och kör en include på den.
              "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

              Kommentera


              • #8
                Fan va grymt, tusen tack!

                Behöver inte starta ny, för verkar fungera finfint nu.

                fick dock ändra

                Kod:
                strComText = Replace(strComText,vbcrlf,"<BR>")
                och lägga till ett mellanslag innan radbrytningen, annars blev det en massa buggar av någon anledning.

                Kod:
                strComText = Replace(strComText,vbcrlf," <BR>")

                Kommentera

                Working...
                X