Hallo

Kan ieman mij helpen om via een reguliere expressie all href waarden op te halen. Uit onderstaand voorbeeld wil ik dus alleen main.css en css_main.css op halen. Ik heb geen idee hoe dit te doen met reguliere expressies.

$pagina = "bla bla bla <href='main.css' rel='stylesheet' type='text/css'> bla bl
a bla<href='css_main.css' rel='stylesheet' type='text/css'> ";

alvast bedankt

Johan
Niet getest, maar zou (hopelijk ;D) moeten werken:

<?
error_reporting(E_ALL);

$sHtml = '<href="blaat">...</a>';

if( preg_match_all('/\<[^>]+href=(\'[^>]+\'|"[^>]+")[^>]+\>/i', $sHtml, $aMatch) )
{
foreach( $aMatch[1] as $iKey => $sValue )
{
echo 'href ' , $iKey , ' = ', $sValue;
}
}
?>
werkt inderdaad niet, wat is er fout ?

Johan
Deze is getest en doen het goed:
<?
error_reporting(E_ALL);

$sHtml = '<href="blaat1" foo="bar">...</a> of < href=\'bla\\\'at2\' foo=\'bar\'>...</a>';

if( preg_match_all('/\<[^>]*href=(\'[^\'\\\\\r\n]*(?:\\\\.[^\'\\\\\r\n]*)*\'|"[^"\\\\\r\n]*(?:\\\\.[^"\\\\\r\n]*)*")[^>]*\>/i', $sHtml, $aMatch) )
{
foreach( $aMatch[1] as $sValue )
{
echo $sValue . ' , zonder quotes ', substr($sValue,1,-1) , '<br />';
}
}
?>

De Regex is wel wat moeilijker geworden.

Reageren