Flin Skrevet 14. april 2008 Del Skrevet 14. april 2008 Hei, jeg sitter her og driver med regexp men jeg møter på et problem. Vil hente ut det som er i mellom to elementer, disse elementene kan oppstå flere ganger. Altså, la oss for å si det enkelt at jeg har en tekst fil med tall mellom disse tallen er det alt fra html kode til linjeskift. Hver gang det kommer et tall vil jeg hente alle bokstavene mellom det tallet og neste. Uansett om det er bokstav hei 1her kommer<b>jeg9 Her vil jeg hente ut her kommer<b>jeg Tenker meg at det må blie noe som dette ([0-9].*[0-9]), men det fungerer ikke. Noen som kan forklare meg? Lenke til kommentar
aCa Skrevet 14. april 2008 Del Skrevet 14. april 2008 Hvis du har en tekst som dette: tall 1 mellom 2 mellom 3. Så vil følgende kode returnere mellom, mellom. preg_match_all('/\d([^\d]+)/s', $string, $result); Men denne koden vil bare returnere en mellom siden den har "brukt opp" 2 tallet på første matchingen og begynenr først å matche igjen ved 3 tallet og det er ikke noe fjerde tall. preg_match_all('/\d(.+)\d/sU', $string, $result); Ble litt dårlig forklart men bare test det på regex verktøyet mitt (http://regex.larsolavtorvik.com/) så vil du skjønne hva jeg mener :-) Håper dette hjalp. Lenke til kommentar
Flin Skrevet 15. april 2008 Forfatter Del Skrevet 15. april 2008 Det der fungerer ikke, mulig du forklarte veldig dårlig, men jeg får det ikke til å funke. Tingen er at jeg trenger i grunn bare en måte å fortelle regexp at fra et punkt til et annet kan hva som helst komme så mange ganger det vil. Man har et vanlig utrykk og så kommer man til et punkt der man vi la hva som helst skje til man møter på neste faste punkt. La si at man har <body> tagen og alt som er der inne vil man ha, men da </body> kommer vil man ikke ha mer. (<body>HVA SKAL STÅ HER INNE FOR Å AKSEPTERE ALT MULIG?</body>) Lenke til kommentar
-morten Skrevet 20. april 2008 Del Skrevet 20. april 2008 PHPs regex er greedy som default (se http://www.skdevelopment.com/php-regular-expressions.php), så uttrykkene fanger opp så mye som mulig. Men hvis du ser på modifier-ene du kan bruke (http://no2.php.net/manual/en/reference.pcre.pattern.modifiers.php), så ser du at punktum ikke fanger opp newlines med mindre du bruker modifieren s. Så hvis du ikke får til noe med det aCa foreslo, så er det nok du som har forklart veldig dårlig hva du prøver på.. Lenke til kommentar
aCa Skrevet 20. april 2008 Del Skrevet 20. april 2008 (endret) Kan du komme med konkrete eksempler for hva du er på jakt etter. Den koden jeg skrev høyere opp burde fungere til eksempelene dine. Det å hente ut alt mellom body start og body slutt. preg_match_all('/<body>(.+)<\/body>/imU', '(<body>HVA SKAL STÅ HER INNE FOR Å AKSEPTERE ALT MULIG?</body>)', $result); Her satte jeg den som ungreedy. Slik at du er sikker på at den stopper ved første </body> men mulig du ikke trenger den U'en til slutt. Som sagt... kom med ett konkret eksempel så skal vi nok finne en løsning for deg :-) Endret 20. april 2008 av aCa Lenke til kommentar
Flin Skrevet 21. april 2008 Forfatter Del Skrevet 21. april 2008 <!-- /Meteorologens vurdering --> <div class="fifteen"> <table summary="15-dagars varsel" class="days"> <tbody> <tr> <td class="empty" /> <td> <h3>I morgen<br /><span>22.04.2008</span></h3> <table summary=""> <tbody> <tr> <td class="w-icon" title="Lettskyet"> <img src="http://fil.nrk.no/yr/grafikk/sym/b38/02d.png" width="38" height="36" alt="Lettskyet" /></td> <td class="plus">12°</td> <td class="wind" title="Flau vind, 0,9 m/s fra sør-sørvest"> <img src="http://fil.nrk.no/yr/grafikk/vindpiler/32/vindpil.0000.200.png" alt="Flau vind, 0,9 m/s fra sør-sørvest" /></td> </tr> </tbody> </table> <p>Lettskyet. Flau vind, 0,9 m/s fra sør-sørvest. 0 mm nedbør i døgnet.</p> </td> <td> <h3>Onsdag<br /><span>23.04.2008</span></h3> <table summary=""> <tbody> <tr> <td class="w-icon" title="Lettskyet"> <img src="http://fil.nrk.no/yr/grafikk/sym/b38/02d.png" width="38" height="36" alt="Lettskyet" /></td> <td class="plus">13°</td> <td class="wind" title="Svak vind, 2,1 m/s fra sør-sørvest"> <img src="http://fil.nrk.no/yr/grafikk/vindpiler/32/vindpil.0025.205.png" alt="Svak vind, 2,1 m/s fra sør-sørvest" /></td> Her vil jeg hente ut det som er mellom <h3>I morgen<br /><span>22.04.2008</span></h3> og </table>. Konkret eksempel? Ja det er utheting av data fra yr.no Lenke til kommentar
aCa Skrevet 21. april 2008 Del Skrevet 21. april 2008 Her vil jeg hente ut det som er mellom <h3>I morgen<br /><span>22.04.2008</span></h3> og </table>. Konkret eksempel?Ja det er utheting av data fra yr.no Det var ett mer konkret eksempel ja. En av måtene man kan hente ut dataene du er på jakt etter er med dette uttrykket. preg_match('/<h3>[\w ]+<br \/><span>[0-9.]+<\/span><\/h3>(.*)<\/table>/is', $string, $result); Håper det hjelper. Lenke til kommentar
Runar0 Skrevet 22. april 2008 Del Skrevet 22. april 2008 Nå har vel yr.no en xml teneste der du vil kunne hente ut alle dataen uten å måtte parse framsida deires. Er ikkje heilt sikker på korleis det fungere med det var ein tråd om det for ikkje se lenge sia Lenke til kommentar
Flin Skrevet 22. april 2008 Forfatter Del Skrevet 22. april 2008 Joda, har set på det. Probleme er da å få tak på den informasjonen du vil. Ikke all info er tilgjengelig i xml. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå