PDA

Bekijk Volledige Versie : Re: 2punt5 of 2komma5



finalwebsites.com
14/11/05, 10:15
Hoi,

Je kan op de client site niet vastleggen wat de gebruiker invoerd. Je
kan twee dingen doen:

valideren zodat de user het juist invoerd

of

je zorgt zelf voor het juiste format met str_replace of zo. je kan het
ook proberen met floatval()

het beste lijkt mij een combinatie van beide, valideren of het een
decimaal getal is en dan de invoer omzetten zodat php ermee kan
rekenen.


--

gr. Olaf
PHP classes and scripts: http://www.finalwebsites.com

Geert Wirken
14/11/05, 10:30
finalwebsites.com schreef op 14-11-2005 10:12:
> Je kan op de client site niet vastleggen wat de gebruiker invoerd. Je
> kan twee dingen doen:
>
> valideren zodat de user het juist invoerd

.... invoerT!

-- Geert

Haico
14/11/05, 21:30
> Je kan op de client site niet vastleggen wat de gebruiker invoerd. Je
> kan twee dingen doen:
>
> valideren zodat de user het juist invoerd
>
> of
>
> je zorgt zelf voor het juiste format met str_replace of zo. je kan het
> ook proberen met floatval()
>
> het beste lijkt mij een combinatie van beide, valideren of het een
> decimaal getal is en dan de invoer omzetten zodat php ermee kan
> rekenen.

floatval() geeft bij '2,5' 2 retour, da's een beetje jammer

str_replace werkt. Voor het mooie controleren op een PUNT in de rechter 3
tekens en deze vervangen voor een KOMMA en de overige PUNTEN dan
verwijderen. Jammer dat floatval() niet toepasbaar is want nu moet ik
'handmatig' foute karakters eruitvissen..

Haico

Haico
14/11/05, 22:15
Dit werkt zolang het allemaal cijfers, punten en komma's zijn:

<?php
$punt=0 ;
for ( $n=strlen($puntkomma); $n>-1 ; $n-- ) {
if ( substr($puntkomma,$n,1)=='.'){
if ( ($punt=='0')&&($n>strlen($puntkomma)-3) ){
// als er nog geen punt gevonden is
// en het waarschijnlijk een punt is die als decimaalteken is bedoeld,
dus de meest rechtse punt
$puntkomma=substr($puntkomma,0,$n).",".substr($puntkomma,$n+1,strlen($puntkomma)-$n-1)
;
// str_replace(".", "", $puntkomma); // werkt bij mij echt niet :-(
$punt='1' ;
} else {
$puntkomma=substr($puntkomma,0,$n).substr($puntkom ma,$n+1,strlen($puntkomma)-$n-1)
;
}
}
}
echo $puntkomma ;


?>
<form action="puntkomma.php" method="post">
voer iets in dat op een lengte lijkt <br>
<input type="text" name="puntkomma" size="20" maxlength="20">
<input type="submit" value="ok">
</form>

Blijft nog het probleem dat ik eigenlijk eerst alle vreemde karakters moet
verwijderen ( wat nou zo leuk had geweest met floatval ) voordat ik de meest
rechtse punt binnen 3 tekens van rechts kan vinden. ( bijvoorbeeld bij een
invoer van "1.234.75 meter" ==> dat geeft "123475 meter"

iemand een idee of ik dit met een PATROON kan oplossen?

Groet,

Haico

finalwebsites.com
16/11/05, 11:45
je hebt gelijk

floatval("2,5") geeft 2 zolang omadt dit een string is

dat was ook de reden dat ik zei gebruik een combinatie van bijde.

$var = floatval(str_replace(",", ".", $var));