|
Posted by Dmitry Ruban on 10/03/25 11:36
Hello Nicolaas,
Take a look at my code for this action, i think it's more accurate:
function is_currency( $v )
{
$v = preg_replace("/[^0-9.]+/","",$v);
return round($v,2);
}
"windandwaves" <winandwaves@coldmail.com> ΣΟΟΒέΙΜ/ΣΟΟΒέΙΜΑ Χ ΞΟΧΟΣΤΡΘ
ΣΜΕΔΥΐέΕΕ: news:cIovf.12929$vH5.660283@news.xtra.co.nz...
> Hi Folk
>
> I wrote the following function as a "cleaner" for a currency input:
>
>
> function is_currency($v) {
> //returns a string with only the numbers for a currency format
> $v = str_replace("$", "", $v);
> $regex = '/(?:([0-9]+)|.)/';
> if(preg_match($regex, trim($v) ) ){
> $v = $v + 0.00001;
> if (is_float($v)) {
> return round($v, 2);
> }
> }
> else {
> return 0;
> }
> }
>
> I want users to be able to put in things like:
> NZ$12.34
> $12.34
> 12
> 12.3456
> 1,002.23
> and it should always translate into a number with two decimals (e.g. 12.34
> or 12.00)
>
> I am sure that this is probably the clumsiest way ever to do this. How
can
> I improve this function?
>
> TIA
>
> Nicolaas
> PS despite numerous efforts I am still super weak on regular expressions.
I
> can only copy them and not write them myself.
>
>
[Back to original message]
|