Ta bort del av textsträng

ASP

12 svar · 316 visningar · startad av Method

Medlem sedan apr. 2001357 inlägg
Trådstart#1

Istället för att försöka förklara mitt önskemål ger jag ett exempel med en gång.
Om jag exempelvis har textsträngen "h218n2fls31o920.telia.com" vill jag ta bort det som är innan första punkten i strängen. DVS i detta fallet "h218n2fls31o920." och sedan spara "telia.com" till databasen.

Skall vara till en besöksräknare om någon redan har en färdig funktion för detta mottas denna med tacksamhet.

Medlem sedan mars 20007 896 inlägg
#2
Function CutIt ( ByVal strHost )
    Dim arrHost, strResult

    arrHost = Split ( strHost, "." )
    strResult = arrHost ( 1 ) & "." & arrHost ( 2 )
    CutIt = strResult
End Function

:q

Man kan ju göra på flera sätt, t.ex. ta ut positionen för första punkten och räkna efter den.

Medlem sedan apr. 2001357 inlägg
#3

Får det inte att funka riktigt.

Har följande kod som jag ska använda:

sub get20
Dim DNS
   Dim A
Set DNS = Server.CreateObject("ASPDNS.DNSLookup")

  strSQL = "Select top 60 dtm, ip, klient, referer from logg order by dtm desc"
  set objRs = objConn.execute(strSQL)

  response.write "<table border='1' cellspacing='0' cellpadding='1'><tr><td class='text'><b>Datum</b></td>" &_
    "<td class='text'><b>Ipnummer</b></td><td class='text'><b>Klientinfo</b></td><td class='text'><b>Kom ifrån...</b></td></tr>"
  do until objRs.eof
A = DNS.GetNameFromIP( objRs( "ip" ) )

    response.write "<tr><td class='smal_text'>" & formatdatetime( objRs( "dtm" ), 0) & "</td><td class='smal_text'><a href=http://" & objRs( "ip" ) &_
      ">" & objRs( "ip" ) &"</a></td><td class='smal_text'>"& A &"</td><td class='smal_text'>" & objRs( "klient" ) & "</td><td class='smal_text'><a href=" & objRs( "referer" ) & " target=blank>" & objRs( "referer" ) & "</a>&nbsp;</td></tr>"

objRs.movenext
  loop
  response.write "</table>"
  set objRs = nothing
end sub

Set DNS = Nothing
Medlem sedan dec. 19995 874 inlägg
#4

Kan det vara såhär du menar?

sub get20
Dim DNS
Dim A
Set DNS = Server.CreateObject("ASPDNS.DNSLookup")
strSQL = "Select top 60 dtm, ip, klient, referer from logg order by dtm desc"
set objRs = objConn.execute(strSQL)

response.write "<table border='1' cellspacing='0' cellpadding='1'><tr><td class='text'><b>Datum</b></td>" &_
"<td class='text'><b>Ipnummer</b></td><td class='text'><b>Klientinfo</b></td><td class='text'><b>Kom ifrån...</b></td></tr>"
do until objRs.eof
CutIt(A) = DNS.GetNameFromIP( objRs( "ip" ) )

response.write "<tr><td class='smal_text'>" & formatdatetime( objRs( "dtm" ), 0) & "</td><td class='smal_text'><a href=http://" & objRs( "ip" ) &_
">" & objRs( "ip" ) &"</a></td><td class='smal_text'>"& A &"</td><td class='smal_text'>" & objRs( "klient" ) & "</td><td class='smal_text'><a href=" & objRs( "referer" ) & " target=blank>" & objRs( "referer" ) & "</a> </td></tr>"

objRs.movenext
loop
response.write "</table>"
set objRs = nothing
end sub

Set DNS = Nothing
Medlem sedan mars 20007 896 inlägg
#5

Den här raden:

CutIt(A) = DNS.GetNameFromIP( objRs( "ip" ) )

Borde se ut så här:

A = CutIt ( DNS.GetNameFromIP ( objRs ( "ip" ) ) )
Medlem sedan dec. 19995 874 inlägg
#6

LOL!!!!!!!!!!!!!!!!!!!

Medlem sedan dec. 19995 874 inlägg
#7

Såhär skall det alltså vara, med funktion inbakad och allt :)

Function CutIt ( ByVal strHost )
    Dim arrHost, strResult
    arrHost = Split ( strHost, "." )
    strResult = arrHost ( 1 ) & "." & arrHost ( 2 )
    CutIt = strResult
End Function

sub get20
Dim DNS
Dim A
Set DNS = Server.CreateObject("ASPDNS.DNSLookup")
strSQL = "Select top 60 dtm, ip, klient, referer from logg order by dtm desc"
set objRs = objConn.execute(strSQL)
response.write "<table border='1' cellspacing='0' cellpadding='1'><tr><td class='text'><b>Datum</b></td>" &_
"<td class='text'><b>Ipnummer</b></td><td class='text'><b>Klientinfo</b></td><td class='text'><b>Kom ifrån...</b></td></tr>"
do until objRs.eof
A = CutIt(DNS.GetNameFromIP( objRs( "ip" ) ))

response.write "<tr><td class='smal_text'>" & formatdatetime( objRs( "dtm" ), 0) & "</td><td class='smal_text'><a href=http://" & objRs( "ip" ) &_
">" & objRs( "ip" ) &"</a></td><td class='smal_text'>"& A &"</td><td class='smal_text'>" & objRs( "klient" ) & "</td><td class='smal_text'><a href=" & objRs( "referer" ) & " target=blank>" & objRs( "referer" ) & "</a> </td></tr>"

objRs.movenext
loop
response.write "</table>"
set objRs = nothing
end sub

Set DNS = Nothing
Medlem sedan apr. 2001357 inlägg
#8

OK jag vet inte vem som har rätt men kör jag Brimbas kod får jag följande fel
Microsoft VBScript runtime error '800a0009'
Subscript out of range: '[number: 1]'

/exclude/stats/Default.asp, line 16

Rad 16 är följande:

strResult = arrHost ( 1 ) & "." & arrHost ( 2 )
Medlem sedan dec. 19995 874 inlägg
#9

Ok, såhär är det.

På det objektet du får ut "h218n2fls31o920.telia.com", skall du köra funktionen CutIt().

Nu gissade jag på att det var DNS.GetNameFromIP( objRs( "ip" ) ), men det kan mycket väl vara fel.

Medlem sedan dec. 200012 464 inlägg
#10

Då ser det ut som om den sträng du skickar till funktionen inte innehåller några punkter.
Vad vill du ha tillbaka i det fallet?

Vad skall hända om strängen innehåller mer än 2 punkter?

Medlem sedan apr. 2001357 inlägg
#11

OK sorry mitt fel
Först har jag ip:t, sen gör jag en reverse lookup, då är det inte säkert att den hittar något domännamn och då skriver den en sträng utan punkter att det inte fanns ett domännamn.
På LarsG:s fråga den ska bara klippa tom första punkten
Exempel "www.sth.bdab.nu" skall bli "sth.bdab.nu"
Jag vet jag är lite jobbig

Medlem sedan dec. 200012 464 inlägg
#12

Då är det väl enklast att skriva så här

Function CutIt ( ByVal strHost )
CutIt = mid(strHost,instr(strHost,".")+1)
End Function

och då är det knappt någon ide att göra en egen funktion av det.

Medlem sedan apr. 2001357 inlägg
#13

Funkar bra nu thx

249 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)