On Mon, 18 Aug 2003 10:06:25 +0200
"Lone" <ingen@email.dk> wrote:
> Wups, jeg postede den her ved en fejl i dk.edb.internet.webdesign.
>
> Er der nogen i den her gruppe, der har et bud på nedenstående:
>
> ----
> Jeg er ny indenfor regexp og kan ikke finde ud af at få hevet
> sidenumre ud af en tekst. Pseudokoden er "Et 1-til-4-cifret tal
> efterfulgt af et mellemrum (måske), efterfulgt af en bindestreg,
> efterfulgt af et mellemrum(måske), efterfulgt af et 1-til-4-cifret
> tal."
>
> F.eks.:
> bla bla bla 12-20 bla bla bla
> bla bla bla 12 - 20 bla bla bla
> bla bla bla 254 - 274 bla bla bla
> bla bla bla 25-27 bla bla bla
>
> Jeg har prøvet noget i stil med if(ereg("(<!--
> pages -->[0-9]{1,4}-[0-9]{1,4}<!-- pages -->)",$temp,$regs)), men det
> dutter ikke.
>
> Er der nogen der kan hitte ud af det? Jeg er kørt sur i
> trial-and-error
hvis ikke der ellers er tal i linjen burde du kunne gøre det med:
preg_match_all("/([0-9]{1,4])/",$text,$matches);
så har du $matches[1][X] der indeholder de tal som er i linjen. X er tal
fra 0 til det antal af tal (1-4 cifre) den har fundet.
så kan du bare checke matches[1][1] om den er et tal, og hvis den er
det, så har du et "tal-tal", er det ikke et tal så har du bare "tal".
Alternativt burde noget ala følgende kunne klare det:
preg_match_all("/([0-9]{1,4][ ].+[-].+[ ].+[0-9]{0,4})/"
,$text,$matches);
så indeholder $matches[1][X] alle de sidetal som der er fundet (altså
helle tallet inkl bindestreg i hvert X)