webForumDet fria alternativet

Problem med RegExp

1 svar · 214 visningar · startad av lilja

liljaMedlem sedan juli 20041 183 inlägg
#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
liljaMedlem 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?

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