phpartikler.dk wrote:
> "Peter" <ichuse@mailx.dk> skrev i en meddelelse
> news:4496727c$0$27626$edfadb0f@dread11.news.tele.dk...
>
>>>$str = "Prisen er 7 kr. + afgifter + diverse";
>>>$str = preg_replace("/[^0-9]/", "", $str);
>>>
>>>Men der er nok et par ting mere du skal tage højde for, f.eks. hvad med
>>>7,95 eller 7.95 ? I ovenstående løsning bliver komma og punktum slettet
>>>(det er dog nemt at modificere).
>>
>>Det er et af problemerne. Hvordan undgår jeg at 7,75 bliver til 775 eller
>>for den sags skyld 0.8005 bliver til 8005? Jeg vil gerne give lov til at
>>bruge 1000-seperator-tegn.
>
> Så ville jeg nok
>
> $str = "Prisen er 7.000.000,95kr. + diverse";
> preg_match("/\d[\d.,]*/", $str, $regs);
Ahem. Den matcher også "1....,.,.,1".
Det kommer selvfølgelig an på hvad funktionen skal bruges til, men hvis
det er vigtigt at gøre opmærksom på slåfejl, skal man nok stramme
udtrykket op.
F. eks.
/\d+(?:\d{3}[,.])*[,.]?\d*/
Men det fanger stadigvæk ikke alle tænkelige fejl. Hvis man vil gå linen
ud, skal man checke imod et array af regexes, der indeholder udtryk som
genkende de formater, man vil acceptere.
Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
I am less likely to answer usenet postings by anonymous authors.
Visit my home page at
http://michael.zedeler.dk/