Morten wrote in dk.edb.internet.webdesign.serverside.asp:
> Torben Brandt wrote in dk.edb.internet.webdesign.serverside.asp:
> >
> > Det er svært, når vi ikke har noget kode. Prøv at post noget af den kode
> > du bruger...
> > Prøv også at del det op i bidder:
> > 1) Returnerer dit asphttp overhovedet noget?
>
> Ja, for hvis jeg f.eks. viser variablen i et textarea kan jeg se alt HTML
> koden, som er lang og jeg kan se at den indeholder DIV tagsne ...
Glimrende. Så langt, så godt :)
> > 2) Prøv så at fjern asphttp-delen og hardcode den streng den returnerede.
>
> Der kom nogle fag-udtryk jeg ikke kendte - hvordan gør jeg dette?
Sorry :)
Det jeg mener er hvis man har noget kode i stil med:
s = EnIndvikletFunktion(..)
Set oRegEx = New RegExp
...
Set oMatches = oRegEx.Execute(s)
Så vidste man jo ikke om fejlen var i det ene eller det andet funktionskald.
Nu ved vi at det første (kaldet til asphttp) virker, så vi koncentrerer os om
det sidste.
I dit textarea kan du se præcist hvad asphttp indeholder - eller med andre
ord, hvad variablen s indeholder (eller hvad du nu har kaldt din variabel).
Lad os sige at s indeholder noget i denne stil:
<html>
...
<h1>header</h1>
<div>afsnit 1</div>
<div>
... en masse linier
</div>
...
</html>
Så kan det være lidt svært at overskue, hvad oRegEx får ud af det.
I stedet for den lange kode med
s = EnIndvikletFunktion(..)
Set oRegEx = New RegExp
...
Set oMatches = oRegEx.Execute(s)
så laver vi kun en test-side, som kun indeholder
s = "<div>afsnit 1</div>"
Set oRegEx = New RegExp
...
Set oMatches = oRegEx.Execute
Response.Write "Matches: " & oMatches.Count
Hvor du prøver at sætte s-strengen til forskellige dele af det asphttp
returnerede.
På den måde kan du lave små, kontrollerede eksempler i stil med det jeg lagde
ud med i denne tråd.
PS Nu har jeg så skrevet en lang smøre om det, men har fået på fornemmelsen
hvad grunden er til at det ikke fungerer:
I stedet for
(.*?)
i oRegEx.Pattern skal der nok snarere stå
([\S\s]*?) ' et stort S og et lille s
Grunden er at . ikke matcher linieskift, så hvis der er linieskift indenfor
dine <div> så kan det være grunden. Så prøv at lave den rettelse først ;)
Du kan se hvad de enkelte dele betyder her:
<URL:
http://msdn.microsoft.com/library/en-us/script56/html/vsproPattern.asp>
/Torben
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! =>
http://www.html.dk/tutorials