Avatar billede forcedesigner Nybegynder
23. december 2004 - 00:40 Der er 25 kommentarer og
1 løsning

[url][/url]

Hejsa Ekspertere

Jamen, jeg har et problem her, jeg vil gerne brug denne funktion Klik Her som i sikkert har set i andre forums.

Jeg har læret hvordan man skifter fra :-) til en smiley...her er koden:

RS("post").Replace(":-)","<img src=""smile.gif"" alt=""Smile"">")


Men hvordan kan jeg skifte mine links som bliver hentet fra en database og som ligner "tekst" lige nu til rigtige clickable links ??

Jeg håber at i VIRKELIG kan hjælpe mig her....mange tak
Avatar billede snepnet Nybegynder
23. december 2004 - 01:17 #1
god aften (eller nat :o)

du kan indsætte links på din side sådan her :

// hvis vi antager at du bare smider dem ind i et panel (somePanel)
// og at du har en reader reader, hvor linket står i kolonnen "link"
HyperLink hl = new HyperLink();
hl.NavigateUrl = reader["link"].ToString();
hl.Text = reader["link"].ToString();
somePanel.Controls.Add(hl);

ovenstående er et .net eksempel i c#, men jeg har egentlig lidt en fornemmelse af at det er asp du skriver i, og ikke asp.net.

(RS er sådan et typisk asp-navn til et recordset :o)

mvh
Avatar billede forcedesigner Nybegynder
23. december 2004 - 01:34 #2
Nej jeg koder faktisk i ASP.NET uden codebehind ved brug af VB.NET....her er hele koden:

StrConn = "Data Source=MATRIX; Initial Catalog=TestingDB; User Id=sa; Password=;"
Conn = New SqlClient.SqlConnection(StrConn)
Conn.Open()

SQL = "SELECT * FROM forum"
Cmd = new SqlCommand (SQL, Conn)
RS = Cmd.ExecuteReader ()

RS.Read()

RS("post").Replace(":-)","<img src=""smilies/smile.gif"">")

RS.close
RS = nothing
Cmd.Dispose


Hvordan skal koden se ud?

hvis denne tekst "Hejsa TRYK HER!" er gemt i databasen skal den udspille Hejsa og TRYK HER! her som et link man kan klikke ved og som åbner sig i et nyt vindue.
Avatar billede snepnet Nybegynder
23. december 2004 - 01:55 #3
Ok - det må du unskylde.
(det hænder med jævne mellemrum at der dukker asp-spørgsmål op herinde :o)

Det er sikkert mig der er lidt tung i det... Trækker du dine data fra en base som du ikke selv har hands on, eller hvad er årsagen til den syntax du har angivet ?

"Hejsa TRYK HER!"

En anden ting... den kode du har sendt... hvad forventer du den gør ?
ExecuteReader() returnerer en DataReader, som mig bekendt ikke har en metode der hedder replace.
Der ligger en Replace-metode på en string, men den manipulerer ikke noget - den returnerer resultatet, hvilket medføre at du kun vil få det f.eks. sådan her :
someString = someString.Replace("*","#")

Det er bestemt ikke for at være ubehøvlet jeg spørger, men jeg har svært ved at se hvordan det du har sendt skulle kunne gøre noget.

Nå... men tilbage til
"Hejsa TRYK HER!"
Det vile du gerne have lavet om til :
Hejsa <a href="http://www.eksperten.com" target="_blank">TRYK HER!</a> ikke ?

mvh
Avatar billede forcedesigner Nybegynder
23. december 2004 - 08:45 #4
OK OK, lad mig gøre det nemt for dig. Hvis nu du har en nyheds system som virker fint men være gang der er noget link i system can du ikke tryke ved linket hvad gøre du saa? jeg vil ha at system can fange alle links i nyheden, fx. vaere gang der ser noget tekst der starter ved http:// skal den vide at det er en link...forstå du?
Avatar billede arne_v Ekspert
23. december 2004 - 09:15 #5
RS er en DataReader

men RS("post") er jo nok ikke en DataReader ...
Avatar billede forcedesigner Nybegynder
23. december 2004 - 09:17 #6
Dim RS as SqlDataReader
Avatar billede arne_v Ekspert
23. december 2004 - 09:20 #7
Hvis det er inde midt i en string du skla have sat A HREF på, så skal du igang
med noget regular expression.
Avatar billede forcedesigner Nybegynder
23. december 2004 - 09:23 #8
lille kan min lille kode skifte :-) til en smiley, nu vil ogsaa ha at du skal kunne skifte alt det link den ser til clickable links man kan tryke ved...ligesom her i eksperten ka du tryke ved den link se: http://www.eksperten.com
Avatar billede forcedesigner Nybegynder
23. december 2004 - 10:43 #9
OK jeg har fundet denne her kode:
<%
Function LinkURLs(strInput)
    Dim iCurrentLocation
    Dim iLinkStart
    Dim iLinkEnd
    Dim strLinkText
    Dim strOutput
   
    iCurrentLocation = 1

    Do While InStr(iCurrentLocation, strInput, "http://", 1) <> 0

        iLinkStart = InStr(iCurrentLocation, strInput, "http://", 1)
       
        iLinkEnd = InStr(iLinkStart, strInput, " ", 1)

        If iLinkEnd = 0 Then iLinkEnd = Len(strInput) + 1

        Select Case Mid(strInput, iLinkEnd - 1, 1)
            Case ".", "!", "?"
                iLinkEnd = iLinkEnd - 1
        End Select

        strOutput = strOutput & Mid(strInput, iCurrentLocation, iLinkStart - iCurrentLocation)
       
        strLinkText = Mid(strInput, iLinkStart, iLinkEnd - iLinkStart)

        strOutput = strOutput & "<A HREF=""" & strLinkText & """>" & strLinkText & "</A>"
       
        iCurrentLocation = iLinkEnd
    Loop
   
    strOutput = strOutput & Mid(strInput, iCurrentLocation)

    LinkURLs = strOutput
End Function


LinkURLsRS("post").Replace(":-)","<img src=""smilies/smile.gif"">"))
%>

Den virker FINT
Avatar billede forcedesigner Nybegynder
23. december 2004 - 10:49 #10
Ok alt virker fint nu og jeg kan trykke paa den vaere link der bliver hentet fra databasen...nice

Ok men nu vil jeg ogsaa have denne BBcode funktion TRYK HER!

Jeg vil kun se TRYK HER! som et clickable link, er der nogen der kan hjaelpe mig med det?
Avatar billede forcedesigner Nybegynder
23. december 2004 - 16:41 #11
huh nu virker det her for mig ogsaa TRYK HER!

RS("post").Replace(":-)","<img src=""smilies/smile.gif"">")).Replace("[url=","<a target=""_blank"" href=").Replace("[/url","</a").Replace("]",">")


den kode virker FINT, anyway svar tilbage saa i bare for points, I am friendly
Avatar billede arne_v Ekspert
24. december 2004 - 13:27 #12
Jeg synes at en regex løsning er kønnere:

    Public Shared Function LinkCreate(ByVal s As String) As String
        Dim m As Match = Regex.Match(s, "(.*?)(http://[\S]+)(.*)", RegexOptions.Singleline)
        If m Is Match.Empty Then
            Return s
        Else
            Return m.Groups(1).ToString & "<a href='" & m.Groups(2).ToString & "'>" & m.Groups(2).ToString + "</a>" & LinkCreate(m.Groups(3).ToString)
        End If
    End Function
Avatar billede forcedesigner Nybegynder
24. december 2004 - 18:21 #13
Ok det her er lidt forvirrende men hvad er der galt?

Her bruger jeg denne funktion som virker FINT:

Tryk Here  <- det virker med denne her kode

RS("post").Replace("",">")


-----------


Men nu vil jeg gerne bruge denne function som IKKE virker:

[url]http://www.exp.dk
  <- koden for neden virker ikke, hjaelp

RS("post").Replace("[url","<a target=""_blank"" href=").Replace("[/url","</a").Replace("]",">")
Avatar billede arne_v Ekspert
24. december 2004 - 18:24 #14
Laver du ikke et usynligt link ?

Altså:

<a target="_blank" href=http://www.exp.dk></a>
Avatar billede forcedesigner Nybegynder
24. december 2004 - 18:26 #15
jeg ved ike hvad du mener men jeg vil bare ha at det her skal virke for mig:

[url]http://www.exp.dk[/url]

og her er koden jeg bruger som der er noget galt med

RS("post").Replace("[url","<a target=""_blank"" href=").Replace("[/url","</a").Replace("]",">")
Avatar billede arne_v Ekspert
25. december 2004 - 13:08 #16
Men så vidt jeg kan se så resulterer de Replace i følgende HTML:

<a target="_blank" href=http://www.exp.dk></a>

og det er jo et usynligt link.
Avatar billede arne_v Ekspert
25. december 2004 - 13:09 #17
Dit problem er at du skal have selve linket duplikeret da den skal både
være i HREF og synligt.

Det er nemt i med regex.
Avatar billede forcedesigner Nybegynder
25. december 2004 - 14:36 #18
Ok men hvordan gøre man det så hvis det er nemt?

det skal jo se sådan ud <a target="_blank" href=http://www.exp.dk>http://www.exp.dk</a>
Avatar billede arne_v Ekspert
25. december 2004 - 14:55 #19
F.eks.:


    Public Shared Function LinkCreate(ByVal s As String) As String
        Dim m As Match = Regex.Match(s, "(.*?)(?:\[url\])(.*?)(?:\[/url\])(.*)", RegexOptions.Singleline)
        If m Is Match.Empty Then
            Return s
        Else
            Return m.Groups(1).ToString & "<a href='" & m.Groups(2).ToString & "'>" & m.Groups(2).ToString + "</a>" & LinkCreate(m.Groups(3).ToString)
        End If
    End Function
Avatar billede arne_v Ekspert
25. december 2004 - 14:55 #20
LinkCreate(RS("post"))
Avatar billede forcedesigner Nybegynder
25. december 2004 - 15:03 #21
OK nu virker denne her function [url]http://www.exp.dk[/url] men ikke den her Tryk Here

sorry arne_v, men jeg vil gerne bruge dem begge på en gang
Avatar billede arne_v Ekspert
25. december 2004 - 15:20 #22
Public Shared Function LinkCreate(ByVal s As String) As String
        Return LinkCreate2(LinkCreate1(s))
    End Function

    Public Shared Function LinkCreate1(ByVal s As String) As String
        Dim m As Match = Regex.Match(s, "(.*?)(?:\[url\])(.*?)(?:\[/url\])(.*)", RegexOptions.Singleline)
        If m Is Match.Empty Then
            Return s
        Else
            Return m.Groups(1).ToString & "<a href='" & m.Groups(2).ToString & "'>" & m.Groups(2).ToString + "</a>" & LinkCreate(m.Groups(3).ToString)
        End If
    End Function

    Public Shared Function LinkCreate2(ByVal s As String) As String
        Dim m As Match = Regex.Match(s, "(.*?)(?:\[url=)(.*?)(?:\])(.*?)(?:\[/url\])(.*)", RegexOptions.Singleline)
        If m Is Match.Empty Then
            Return s
        Else
            Return m.Groups(1).ToString & "<a href='" & m.Groups(2).ToString & "'>" & m.Groups(3).ToString + "</a>" & LinkCreate(m.Groups(4).ToString)
        End If
    End Function
Avatar billede arne_v Ekspert
25. december 2004 - 15:21 #23
Og stadig

LinkCreate(RS("post"))
Avatar billede forcedesigner Nybegynder
25. december 2004 - 20:44 #24
MANGEEEEEEEEEEEEEEE TAK arne_v, svar tilbage for points
Avatar billede arne_v Ekspert
25. december 2004 - 20:46 #25
svar
Avatar billede forcedesigner Nybegynder
25. december 2004 - 20:46 #26
U R THE MAN
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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