[regexp] data tussen html tags ophalen.

Pagina: 1
Acties:

  • mcB
  • Registratie: Mei 2002
  • Laatst online: 10:41
Na al oa. de regexp FAQ doorgenomen te hebben zit ik nog steeds met een probleem.

Ik probeer data van een html pagina te halen. Dit lukt me al wel dmv de volgende expressie: |<[^>]+>(.*)</[^>]+>|

Ik loop hiermee dus nog tegen het probleem aan dat geneste tags ook in de output terug komen, (en dat wil ik dus niet).
vb .
code:
1
<tr><b>hier wat tekst</b></tr>


Dit levert dus,... <b>hier wat tekst</b>

Wie kan me op weg helpen het probleem op te lossen?

Strix (Skullflame)


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Um, deze expressie?
code:
1
<(.|\n)+?>


Weet niet of het is wat je bedoelt...

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Zeker geen mooie oplossing, maar gewoon nog een keer de output regexen? Maargoed, dat kan vast netter :)

  • mcB
  • Registratie: Mei 2002
  • Laatst online: 10:41
@RobIII

Dat is niet helemaal wat ik boedoel.
De html code staat precies als in mn eerste post.

Strix (Skullflame)


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
mcB schreef op 23 October 2003 @ 17:40:
@RobIII

Dat is niet helemaal wat ik boedoel.
De html code staat precies als in mn eerste post.
Huh? Bij mij haalt 'ie de tags weg hoor...
Dit is mijn code:
ASP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Public Function StripHTMLEx(strHTML)
'Strips the HTML tags from strHTML

  Dim objRegExp, strOutput
  Set objRegExp = New Regexp

  objRegExp.IgnoreCase = True
  objRegExp.Global = True
  objRegExp.Pattern = "<(.|\n)+?>"

  'Replace all HTML tag matches with the empty string
  strOutput = objRegExp.Replace(strHTML, "")
  
  StripHTMLEx = strOutput    'Return the value of strOutput

  Set objRegExp = Nothing
End Function


Dus:
ASP:
1
response.write StripHTMLEx("Dit is een test <i><b>bla</b></i>")


Geeft gewoon:
code:
1
Dit is een test bla

[ Voor 39% gewijzigd door RobIII op 23-10-2003 17:57 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • mcB
  • Registratie: Mei 2002
  • Laatst online: 10:41
Het klopt idd dat de html tags verdwenen zijn door ze te replacen met niks.
Het probleem is dan nog dat data tussen de style-tags blijft staan en dat er een hoop lege regels overblijven.

Strix (Skullflame)


  • mjax
  • Registratie: September 2000
  • Laatst online: 28-07 20:20
mcB schreef op 24 October 2003 @ 04:31:
Het klopt idd dat de html tags verdwenen zijn door ze te replacen met niks.
Het probleem is dan nog dat data tussen de style-tags blijft staan en dat er een hoop lege regels overblijven.
Dan ben je er dus bijna.

Wat je reguliere expressie nu nog moet doen is regelovergangen ook zien als whitespace. In een perl reguliere expressie kan dit met de modifier "s". Modifiers plaats je aan het einde van de expressie, na de laatste slash.

Je schrijft niet in welke taal je deze RE's wilt gebruiken, maar onder PHP kun je perl expressies gebruiken met de preg_XXXX varianten. Op die manier wordt dus ook de data tussen STYLE tags meegenomen.

Om daarna wat lege regels eruit te filteren kan niet meer zo moeilijk zijn.
Pagina: 1