Geldbetrag formatieren

bigbiggy

Grünschnabel
Habe folgendes problem,

Es sollen preise in diesem format in die db gespeichert werden 1.000,00

Preise die eingelesenwerden sind z.B

1000,-
1.000.00
1,000,00
1000 €

u.s.w und die sollen in das format gewandelt werden 1.000,00

bekomme das irgentwie nicht hin
 
Geldbeträge würde ich prinzipiell als Gleitkommazahl in der Datenbankspeichern und erst zur Ausgabe formatieren. Dafür bietet sich etwa die money_format()-Funktion an.
Für die Eingabe würde ich vorschlagen, nur bestimmte Formate anzuerkennen, am besten nur die Dezimalschreibweisen ohne Währung. Folgende Funktion wäre beispielsweise möglich:
PHP:
function money_parse( $string )
{
	$string = preg_replace('/[^,.0-9]/', '', $string);
	preg_match('/([0-9,.]+?)(?:[.,]([0-9]{1,2}))?$/', $string, $match);
	switch( count($match) - 1 ) {
		case 1:
			return floatval(preg_replace('/[^0-9]/', '', $match[1]));
			break;
		case 2:
			return floatval(preg_replace('/[^0-9]/', '', $match[1]).'.'.preg_replace('/[^0-9]/', '', $match[2]));
			break;
	}
	return false;
}
 
Zurück