note 106784 deleted from function.round by thiago
| From: | thiago@php.net | Date: | Tue, 06 Dec 2011 14:46:07 +0000 |
| Subject: | note 106784 deleted from function.round by thiago | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-184936@lists.php.net to get a copy of this message | ||
Note Submitter: fontajos at phpeppershop dot com
Reason: non-english
----
<?php
// -----------------------------------------------------------------------
// Funktion : cut_zeros
// Zweck : Schneidet alle Nullen rechts von einer Zahl weg - inkl. Dezimal-
// trennzeichen, falls es sich um eine Ganzzahl handelt.
// Gruppe : utils
// Argumente: $number (integer/float/string), $decimal_char (String, z.B. '.'),
// $log_errors (Boolean, default = true)
// Rueckgabe: Reine (String)Zahl mit Dezimaltrennzeichen, ohne andere Zeichen und ohne Nullen rechts
(String)
function cut_zeros($number,$decimal_char='.',$log_errors=true) {
if ($decimal_char === '') {
if ($log_errors) err('util_Error:
cut_zeros("'.$number.'","'.$decimal_char.',"'.$log_errors.'"):
Kein Dezimaltrennzeichen angegeben!');
return false;
}
// Dezimaltrennzeichen merken und sicherstellen, dass ein Punkt als Dezimaltrennzeichen in der
Zahl vorhanden ist
$decimal_char_orig = $decimal_char;
if ($decimal_char != '.') {
$number = str_replace($decimal_char,'.',$number);
$decimal_char = '.';
}
// Leerzeichen an Beginn und Ende wegschneiden UND (!) in String wandeln:
$number_ok = trim($number);
// Ungueltige Zeichen wegschneiden - z.B. auch Tausendertrennzeichen oder so:
$number_ok = preg_replace("/[^0-9\\.-]*/",'',$number_ok);
// Wir lesen die Anzahl Dezimaltrennzeichen im String aus:
$anzahl_decimal_char = substr_count($number_ok,$decimal_char);
if ($anzahl_decimal_char <= 1) {
// a) Kein oder ein Dezimaltrennzeichen vorhanden:
// 1.) Wir konvertieren in einen float
// 2.) Wir ersetzen Punkt durch angegebenes Dezimaltrennzeichen
// 3.) Wir retournieren den String
return str_replace($decimal_char,$decimal_char_orig,(string)floatval($number_ok));
}
else {
// b) Mehr als ein Dezimaltrennzeichen vorhanden - Fehler retournieren
if ($log_errors) err('util_Error:
cut_zeros("'.$number.'","'.$decimal_char.',"'.$log_errors.'"):
Argument enthaelt Dezimaltrennzeichen mehrfach und kann nicht konvertiert werden!');
return false;
}
}// End function cut_zeros
?>