[PHP] Regular Expression. Anchor names uit HTML filteren.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • M55
  • Registratie: September 2003
  • Niet online
Ik wil uit een string van HTML alle anchor tags uitvissen met behulp van regular expressions.
De anchor tags zijn in het formaat <a name="name" title="title"></a>.

Om dit voor elkaar te krijgen, gebruik ik nu:

PHP:
1
2
3
4
<?php
/* $this->html is een HTML pagina, $this->matches is een lege array */
preg_match_all("/<a name=\"(.*)\" title=\"(.*)\"><\/a>/", $this->html, $this->matches, PREG_SET_ORDER);
?>


Echter levert dit totaal verkeerde resultaten op, ik moet toegeven dat mijn regular expression kennis te kort schiet ;)

Wie kan mij helpen :) ?

Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
ten eerste kunnen je linkjes op het moment alleen leeg zijn... (zodat je er dus niet op kan klikken)

verder zijn al je groups (of hoe heten die normale haakjes) greedy, waardoor je maximaal 2 resultaten krijgt (1 title, en 1 name)

ungreedy maken doe je zo:
(.*?) ipv (.*)

kom je zo een eind op weg?

edit: ow en nog wat, als je meerdere linkjes wilt matchen zal je het geheel ook moeten laten herhalen he :)

[ Voor 15% gewijzigd door BasieP op 07-03-2007 16:53 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 31-08 10:22

JayVee

shibby++!

ungreedy zou ik zo maken (maar ik ben geen ervaren regexer!)
PHP:
1
preg_match_all("/<a href=\"([^\"]*)\"/", $this, $this);

In woorden: pak alles wat niet " is...

ASCII stupid question, get a stupid ANSI!


Acties:
  • 0 Henk 'm!

  • M55
  • Registratie: September 2003
  • Niet online
BasieP schreef op woensdag 07 maart 2007 @ 16:50:
ten eerste kunnen je linkjes op het moment alleen leeg zijn... (zodat je er dus niet op kan klikken)

verder zijn al je groups (of hoe heten die normale haakjes) greedy, waardoor je maximaal 2 resultaten krijgt (1 title, en 1 name)

ungreedy maken doe je zo:
(.*?) ipv (.*)

kom je zo een eind op weg?

edit: ow en nog wat, als je meerdere linkjes wilt matchen zal je het geheel ook moeten laten herhalen he :)
Dit was de oplossing, herhalen deed hij al (omdat het preg_match_all is ? )

Bedankt ! :)