Avatar billede Bjarne Novice
13. februar 2007 - 17:47 Der er 9 kommentarer og
1 løsning

Søgning i en streng 2

Goddag.

Jeg har følgende regex: preg_match_all( "!<a href=\"(.*?)\" class=\"(.*?)\">(.*?)</a>!si", $text, $match, PREG_SET_ORDER )

Det virker glimrende, men jeg vil gerne have et match på følgende også: <td valign="top" align="center" bgcolor="#ffffff">&nbsp;</td>

Det dur ikke, at lave det i to regulære udtryk, da rækkefølgen af match's har betydning.

På forhånd tak
Avatar billede jakobdo Ekspert
13. februar 2007 - 18:39 #1
Jeg tror enten du skal give os hele dit input, og hvad du ønsker som output.
Og det er som sådan ikke php, men mere regulære udtryk, som der er en kategori til. :o)
Avatar billede Bjarne Novice
13. februar 2007 - 19:04 #2
Beklager.. Jeg har beskrevet det i en tidligere tråd: http://www.eksperten.dk/spm/761717

Oveni vil jeg gerne have et match på <td valign="top" align="center" bgcolor="#ffffff">&nbsp;</td> i samme udtryk.

F.eks.:

<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><td valign="top" align="center" bgcolor="#ffffff">&nbsp;</td>

skulle gerne give:

Array
(
    [0] => Array
        (
            [0] => Page.aspx?id=145
            [1] => Cls
            [2] => indhold
        )

    [1] => Array
        (
            [0] => Page.aspx?id=146
            [1] => Cls2
            [2] => indhold2
        )

    [2]  => tom

)
Avatar billede jakobdo Ekspert
13. februar 2007 - 19:10 #3
Det du mener det skal give, har jo ingen data fra TD med?
Hvilke data vil du have derfra?
Avatar billede jakobdo Ekspert
13. februar 2007 - 19:10 #4
Og jeg tror faktisk ikke du kan lave det i en regexp.
Du har flere a tags, men kun et td tag.
Avatar billede Bjarne Novice
13. februar 2007 - 19:14 #5
Som sådan ingen data fra td'en.. Jeg er bare interesseret i at vide, om den forekommer i strengen.
Avatar billede Bjarne Novice
13. februar 2007 - 19:20 #6
Jeg har selv prøvet at sætte en | mellem de to: !
<a href=\"(.*?)\" class=\"(.*?)\">(.*?)</a>|<td valign=\"top\" align=\"center\" bgcolor=\"#ffffff\">&nbsp;</td>!si

Det virker ikke, men i mere simple eksempler kan man jo godt have mere end én streng at matche, fx: (abc|def)?
Avatar billede plx Nybegynder
13. februar 2007 - 19:20 #7
Du kan flette flere udtryk sammen med OR

(udtryk 1)|(udtryk 2)

?: betyder, at indholdet af parentesen ikke fanges

preg_match_all( "!(?:<a href=\"(.*?)\" class=\"(.*?)\">(.*?)</a>)|(<td valign=\"top\" align=\"center\" bgcolor=\"#ffffff\">&nbsp;</td>)!si", $text, $match, PREG_SET_ORDER );
Avatar billede Bjarne Novice
13. februar 2007 - 19:43 #8
plx: Præcist hvad jeg søgte! ?: var svaret på alle problemer(sådan cirka).. Tusind tak.

Smid et svar ;)
Avatar billede plx Nybegynder
13. februar 2007 - 22:46 #9
ok
Avatar billede Bjarne Novice
13. februar 2007 - 22:51 #10
tak for hjælpen
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