[php] regex alle links uit een html pagina halen?

Pagina: 1
Acties:

  • Bartholomew
  • Registratie: Januari 2000
  • Laatst online: 12-04 12:56
ik probeer alle links uit een html pagina te halen met een Regular expression maar dat lukt nog niet zo goed.

Eigenlijk wil ik zoeken in abc en dan aangeven dat ie alles moet teruggeven wat tussen a en c staat. b dus.

ik heb de volgende code:

[php]
<?


$buffer = '<br><a href="bart.html" target="_parent">Dit is een link</a>';

ereg ("href=\"(.*)\"", $buffer, $out);

echo "[buffer]: $buffer<br>\n";

for($i=0; $i<count($out); $i++)
{
echo "[$i]: $out[$i]<br>\n";
}


?>

[\php]

maar hier krijg ik dit uit:

[0]: href="bart.html" target="_parent"
[1]: bart.html" target="_parent

terwijl ik dus bart.html wil! :) lastig!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:47
Reguliere expressies zijn in de meeste implementaties greedy: dat wil zeggen, ze proberen zo snel mogelijk zo veel mogelijk tekst te matchen. In dit geval matcht alles na 't eerste aanhalingsteken (want je gebruikt .*), wat je resultaat in out[1] verklaart.

Als je van je expressie 'href="([^"]* )"' maakt, zou het goed moeten gaan (mits er geen aanhalingstekens in de url voorkomen; wat normaal gesproken het geval is).

edit:
Let op! Die spatie achter dat sterretje moet weg, maar dit #$%^&*-forum vind 't nodig er een smiley van te maken ik *D type.