Sök  
 
Skribent Inlägget Löst
Google
 
     

  Forum » ASP » Regexp  
 
Skriven av: hottetotte | den 29 juli 2014 Kl 16:31
Regexp Tråden är löst
Hej!

Jag har en kod:

<%
Dim objHTTP, strHTML, hittade, objRegExp, brandrisk
Set objHTTP = Server.CreateObject("MSXML2.XMLHTTP")

objHTTP.Open "GET","http://kriswebb.dalarna.se/SV/BRANDRISKPROGNOSER/Pages/default.aspx", False

objHTTP.Send
strHTML=objHTTP.responseText
Set objHTTP = Nothing

Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "<td.*?>(.*?)</td>"
Set hittade = objRegExp.Execute(strHTML)

brandrisk = hittade(13).SubMatches(0)
  
Set hittade = Nothing

If brandrisk = "5E" Then
  Response.Write("<img src='brandrisk5E.png'>")
ElseIf brandrisk = 1 Then
  Response.Write("<img src='brandrisk1.png'>")
ElseIf brandrisk = 2 Then
  Response.Write("<img src='brandrisk2.png'>")
ElseIf brandrisk = 3 Then
  Response.Write("<img src='brandrisk3.png'>")
ElseIf brandrisk = 4 Then
  Response.Write("<img src='brandrisk4.png'>")
ElseIf brandrisk = 5 Then
  Response.Write("<img src='brandrisk5.png'>")

Else
  Response.Write "-"
End If

%>

Den fungerar förutom när brandrisken är 5E, då får jag följande felmeddelande:
Microsoft VBScript runtime error '800a000d'
Type mismatch: '[string: " 5E"]'

Hur kodar man så det fungerar med 5E också?

Antal svar 3




Skriven av: voigtan1 | den 29 juli 2014 Kl 17:42
Du försöker jämföra en sträng och sen ett tal, det gillar inte det riktigt, jag hade skrivit om if frågan helt för att kontrollera om brandrisk är ett tal, om det är det kolla om den är 1-5 och skriv ut det numret.

Sen är regex uttrycket inte riktigt korrekt för det är inte "5E" som ditt uttryck tar ut, den hämtar ut något mellanslag och en gömt tecken som är lite svår att jämföra med (därav din crash för den hittar inte på "5E").

Du är bara intresserad av värdet tillbaka, jag skrev om koden lite, om du få tillbaka en tabell som har tre träffar (efter regex uttrycket har ändrats) så skall vi ta det värdet och bygga ihop bildkällan, om den inte hittar det så har antigen HTML strukturen ändrats eller är det ett scenario som inte det nya regex:et inte träffar, men då presenteras "-" i alla fall och inte en crash.
Kod:
<%
Dim objHTTP, strHTML, hittade, objRegExp, brandrisk
Set objHTTP = Server.CreateObject("MSXML2.XMLHTTP")

objHTTP.Open "GET","http://kriswebb.dalarna.se/SV/BRANDRISKPROGNOSER/Pages/default.aspx", False

objHTTP.Send
strHTML=objHTTP.responseText
Set objHTTP = Nothing

Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = "<td.*?>[\s\uFEFF\xA0]*([1-5]E?)[\s\uFEFF\xA0]*</td>"
Set hittade = objRegExp.Execute(strHTML)

If hittade.count = 3 Then
    Response.Write("<img src='brandrisk" & hittade(2).SubMatches(0) & ".png'>")
Else
    Response.Write "-"
End If

Set hittade = Nothing
%>



Är inte "1-3" längre intressant att plocka ut enligt http://old.aspsidan.se/default.asp?page=forum&fp=showPost&fId=2&pId=605964 ?
Skriven av: hottetotte | den 29 juli 2014 Kl 22:42
Tackar!!

Det fungerar. Har du lust att förklara koden lite?
Skriven av: voigtan1 | den 29 juli 2014 Kl 22:53
regexet letar bara upp <td>med mellanslag osv men endast träffa alla som har:
1, 2, 3, 4, 5 eller 5E.

Du är ute efter 3 td (Sydost (SO)) om den hittar den så sätt bildkällan till dess värde (1, 2, 3, 4, 5 eller 5E) annars skriver den ut "-"
 
     

  Svara på inlägg  
 
Du måste vara medlem på ASPsidan för att kunna skriva i forumet.
För att bli medlem klicka här.
 
     

  » Logga in  
 
Användarnamn

Lösenord

 
     

  » Bli medlem  
  Bli medlem på ASPsidan!  
     

     
  Microsoft  
     

  » Partners  
  Comsolvia  
     
  » ANNONS  
  ingen annons än  
     

  » Senast online  
  Endast för inloggade  
  Antal inloggade: 1  
     

Copyright © 2007 www.ASPsidan.se
ingen sponsrar längre ASPsidan med Dedikerad Server
ASPsidan RSS
   
 XHTML / CSS
Det tog 0,3594 sekunder att ladda sidan