Avatar billede Bjarne Novice
10. februar 2007 - 14:41 Der er 3 kommentarer og
1 løsning

Søgning i en streng

Goddag

Jeg har et problem mht. et regex til at søge i følgende streng:

<td valign="top" align="center" bgcolor="#ffffff" nowrap="nowrap"><div><a href="Page.aspx?id=145" class="Cls">indhold</a><div><a href="Page.aspx?lektionid=146" class="Cls2">indhold2</a></div></td>

Jeg forsøger, at få det ud i et array i dette format:

Array
(
    [0] => Array
        (
            [link] => Page.aspx?id=145
            [class] => Cls
            [content] => indhold
        )

    [1] => Array
        (
            [link] => Page.aspx?id=146
            [class] => Cls2
            [content] => indhold2
        )

)

Jeg har forsøgt mig med regex, men jeg kan ikke få det til at virke rigtigt. Håber der sidder en regex-haj derude, som kan hjælpe lidt.
Avatar billede coderdk Praktikant
10. februar 2007 - 16:39 #1
$text = '<td valign="top" align="center" bgcolor="#ffffff" nowrap="nowrap"><div><a href="Page.aspx?id=145" class="Cls">indhold</a><div><a href="Page.aspx?lektionid=146" class="Cls2">indhold2</a></div></td>';
    if ( preg_match_all( "!<a href=\"(.*?)\" class=\"(.*?)\">(.*?)</a>!si", $text, $m, PREG_SET_ORDER ) )
    {
        echo "<pre>";
        var_dump( $m );
        echo "</pre>";
    }
Avatar billede Bjarne Novice
10. februar 2007 - 17:50 #2
Mange tak.

Jeg har lige to spørgsmål: Hvad gør si efter din delimiter(i = insensitive ?)? Hvorfor "(.*?)" - hvad gør spørgsmålstegnet i den sammenhæng(har selv brugt "(.+)")?
Avatar billede coderdk Praktikant
10. februar 2007 - 20:20 #3
i = case insensitive s = behandler . som et whitespace
? gør at udtrykket bliver ungreedy - samme som at bruge .* med en /U switch

F.eks. <b>hej</b> med <b>dig</b> - udtrykket <b>(.*)</b> vil finde alt fra den første <b> til den sidste </b> - hvorimod <b>(.*?)</b> kun vil finde "hej"
Avatar billede Bjarne Novice
10. februar 2007 - 21:00 #4
ok.. tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB