webForumDet fria alternativet

Problem med RegularExpressions

2 svar · 365 visningar · startad av lilja

liljaMedlem sedan juli 20041 183 inlägg
#1

Nu har jag suttit i flera timmar och försökt få fram data ur en sida men inte lyckats... Jag vet dock att jag hämtar sidan korrekt. men sen när jag skall plocka ut data förstår jag nada ...

Kan ingen hjälpa mig att komma igång?

Jag har sidan:
http://www.dnsstuff.com/tools/city.ch?ip=81.231.240.208

Jag vill plocka ut det som står bredvid Country, City, Country Code och Currency. Jag försöker plocka ut data en åt gången...

Kod som fungerar

	Function GetISP(strIP)
		If InStr(strIP, ".") = 3 Then
			Set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
			objHTTP.Open "GET", "http://www.ripe.net/perl/whois?form_type=simple&full_query_string=&searchtext=" & strIP & "&do_search=Search", False
			objHTTP.Send
			strHTML = objHTTP.ResponseText
			Set objHTTP = Nothing
			
			With New RegExp
				.IgnoreCase = True
				.Global = False
				.Pattern = "descr:[^\n]+"
				
				For Each Match In .Execute(strHTML)
					strMatch = Trim(Mid(Match.Value, 7))
				Next
			End With
			
			GetISP = strMatch
		Else
			GetISP = "No valid IPv4"
		End If
	End Function

Kod som inte fungerar (annan sida). men borde vara samma ändå??

	Function GetCountryCode(strIP)
		If InStr(strIP, ".") = 3 Then
			Set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
			objHTTP.Open "GET", "http://www.ripe.net/perl/whois?form_type=simple&full_query_string=&searchtext=" & strIP & "&do_search=Search", False
			objHTTP.Send
			strHTML = objHTTP.ResponseText
			Set objHTTP = Nothing
			
			With New RegExp
				.IgnoreCase = True
				.Global = False
				.Pattern = "Country:[^\n]+"
				
				For Each Match In .Execute(strHTML)
					strMatch = Trim(Mid(Match.Value, 8))
				Next
			End With
			
			GetCountryCode = strMatch
		Else
			GetCountryCode = "No valid IPv4"
		End If
	End Function

Jag anropar funktionerna med:

<%
strIP = Request.ServerVariables("REMOTE_HOST")
Response.Write(GetISP(strIP))
Response.Write(GetCountryCode(strIP))
%>
emissionMedlem sedan dec. 19996 721 inlägg
#2

Koden fungerar bra. Vad är problemet?

1. Om det är dnsstuff du vill köra så får du byta ut URL:en
2. Om det är Country Code du vill ha så får du ha det i din pattern, i stället för bara Country
3. Testen för IPv4-riktighet är inte riktigt klar väl?
4. Onödigt att hämta sidan flera gånger

liljaMedlem sedan juli 20041 183 inlägg
#3

Ko jag hade fel adress, visste att det var något dummt men kunde bara inte se det. Koden är inte heller optimal då jag bara försöker få det att fungera just nu...

128 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)