webForumDet fria alternativet
Logga in / Bli medlem

Problem med RegExp

ASP

1 svar · 214 visningar · startad av lilja

Medlem sedan juli 20041 183 inlägg
Frågan#1

Varför delas inte mina nyheter upp i följande kod?

'----- Hämtar SOFTs hemsida
Set objHTTP = Server.CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "GET", "http://www.orientering.se", False
objHTTP.Send
strHTML = objHTTP.ResponseBody
Set objHTTP = Nothing

'----- Omvandlar binär text till vanlig text så att å, ä ö och liknande visas
strHTML = BinToText(strHTML,35000)
'----- Tar bort radbrytningar
strHTML = Replace(strHTML, vbCrLf, "#radbrytning#")

Set objRegExp = New RegExp
objRegExp.Global = true
objRegExp.IgnoreCase = false

'----- Använd bara aktuell nyhetsdel från sidan
objRegExp.Pattern = "<div class=""clNewsHeader""><h4>NYHETER</h4></div>.+<div class=""clNewsHeader""><h4>FLER NYHETER</h4></div>"
Set arrResult = objRegExp.Execute(strHTML)
strHTML = arrResult(0)

'----- Dela upp nyheterna
objRegExp.Pattern = "<div class=""clNewsEntry"">.+</div>"
Set arrNews = objRegExp.Execute(strHTML)

Set objRegExp = Nothing

Jag vill att arrNews skall innehålla olika nyheter. Som det är nu sparas alla nyheter i en enda och jag har inte den blekaste aning om varför???

Om ni undrar vad BinToText() är så är det en funktion som gör att å, ä och ö visas korrekt genom att omvandla från binär till vanlig ASCII. Tror jag, har nämligen inte skapat den själv. Funktionen ser ut såhär:

Function BinToText(varBinData, intDataSizeInBytes)
	const adFldLong = 128
	const adVarChar = 200
	set objRS = Server.CreateObject("ADODB.Recordset")
	
	objRS.Fields.Append "txt", adVarChar, intDataSizeInBytes, adFldLong
	objRS.Open
	
	objRS.AddNew
	On Error Resume Next
	objRS.Fields("txt").AppendChunk(varBinData)
	tmp = objRS("txt").Value
	objRS.Close
	Set objRs = Nothing
	BinToText = tmp
End Function
Medlem sedan juli 20041 183 inlägg
#2

Äh, det brukar funka att fråga så hittar man lösningen strax därefter. I alla fall för mig ;) Jag läste en text nu om lata och giriga plus och stjärn-tecken (+ och *) och om man satte ett ? efter så blev de lata, vilket betyder att de returnerar första stoppet de hittar. Annars fortsätter den till sista möjliga stoppet...

Aja, det löste sig genom att sätta dit ett frågetecken. Anledningen till att jag skrev här var för att jag trodde det var en inställning till mitt RegExp objekt och att RegExp tråden här verkar vara nerlagd?

268 ms totalt · 4 externa anrop · v20260731065814-full.05830320
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)