[php] regular expressions

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • kinderpindakaas
  • Registratie: Oktober 2006
  • Laatst online: 12-03-2024
Vandaag wat aan de slag geweest met preg_match, maar ik begin echt vast te lopen. Ik moet een aantal data uit broncode filteren, maar regular expressions zijn voor mij na veel studeren nog steeds abracadabra.

Het gaat om de volgende regel code waar het een en ander uitgefilterd moet worden.

<tr bgcolor=#A2BAFF><td class=toplist_td width=35 align=right><b>1 </b></td><td class=toplist_td width=400> <a target=_blank href=http://www.df5.org/brigade.php?action=show&id=420>The Norse Berzerkers (#420)</a></td><td class=toplist_td width=100 align=right><b>2 616p </b></td></tr>

De vet gedrukte gedeeltes wil ik eruit filteren. Nadeel is dat deze gedeeltes verschillend qua lengte karakters kunnen zijn. De niet vetgedrukte gedeeltes zijn echter wel weer uniek. Die veranderen dus niet.

Is het mogelijk om hier een regex van te maken in php?

Acties:
  • 0 Henk 'm!

Verwijderd

Dit is in principe gewoon een script request en dat vinden ze hier niet zo lief :)

Maar ja,
Wat ik altijd doe is stap voor stap een reguliere expressie opbouwen, ik begin bijvoorbeeld met "<tr bgcolor=#A2BAFF>" eruit te filteren. Vervolgens "<tr bgcolor=#A2BAFF><td class=toplist_td width=35 align=right>", etc.

Je andere probleem: je weet niet hoelang een stuk wordt. MAAR je weet wel wanneer een stuk eindigd.
Bv bij "The Norse Berzerkers (#420)", je moet dan stoppen als je "<" tegenkomt (van </a>). Dit kan je vrij gemakkelijk met reguliere expressies doen. Goei: ([^<]+) in je expressie in je hebt hem al.

Overigens denk ik niet dat de id in "action=show&id=420" uniek is. Dit moet je dus meenemen in je pattern

Ga je de scores jatten ;) (http://www.defcon5.info/?toplist=SPEED4)

[ Voor 14% gewijzigd door Verwijderd op 07-03-2007 11:25 . Reden: Nederlands blijft moeilijk ]


Acties:
  • 0 Henk 'm!

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 05-09 21:08

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Om toch maar een beetje te helpen, zoiets als dit zal wel ongeveer werken voor je: <(a|b).*?>([^<]+)</(a|b).*?>

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • Theuno
  • Registratie: Juni 2001
  • Nu online

Theuno

Da Devil Crew

Wat is zelf een hele makkelijke tool vind voor dit soort dingen is Regexbuddy. Als je regex daarin eenmaal af is poept deze ook nog eens code uit in de gewenste programmeertaal.

www.regexbuddy.com

Deze tool helpt je verder ook hard om je regex kennis te verbeteren, en geeft de opties om je regexen te testen op documenten die je erin plakt of opent.

(niet dat ik het wil promoten ofzo, maar vind het zelf gewoon super voor als ik weer met regexen pruts)

[ Voor 13% gewijzigd door Theuno op 07-03-2007 15:34 ]

Theuno - Da Devil Crew - Een programmeur is iemand die koffie omzet in software...
Nu nog betere koffie...