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
> 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
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));