String Replace - nur "zweites" Komma ersetzen..
Bruzzler
- php
0 suit1 ChrisB0 Georg0 Bruzzler
Hi zusammen,
ich steh glaub grad auf dem Schlauch.
Meine Zahlenausgabe ist im Moment:
€ 1.728.99
Ich will die Ausgabe des Zahlenformats so haben:
€ 1.728,99
Mit
<?php echo '€ '.str_replace('.',',',$shippingcost); ?>
wird aber auch das Tausendertrennzeichen ersetzt, is ja auch logisch. Wie bekomm ich es denn hin, dass der Tausenderpunkt unangetastet bleibt??
Danke und viele Grüße
Bruzzler
Meine Zahlenausgabe ist im Moment:
€ 1.728.99
Wie kommt das zustande?
Meine Zahlenausgabe ist im Moment:
€ 1.728.99
Wie kommt das zustande?
Datenbank Eintrag durch Joomla / Virtuemart
'ǝɯɐu$ ıɥ
Meine Zahlenausgabe ist im Moment:
€ 1.728.99
Wie kommt das zustande?
Datenbank Eintrag durch Joomla / Virtuemart
Hmpf, mit der Frage war wohl eher gemeint ob du nicht an der Quelle (_bevor_ die in eine DB gepackt werden) schon dafür sorgen kannst das sie im "richtigen" Format vorliegen...
ssnɹƃ
ʍopɐɥs
Hello,
Meine Zahlenausgabe ist im Moment:
€ 1.728.99
Wie kommt das zustande?
Datenbank Eintrag durch Joomla / Virtuemart
Hmpf, mit der Frage war wohl eher gemeint ob du nicht an der Quelle (_bevor_ die in eine DB gepackt werden) schon dafür sorgen kannst das sie im "richtigen" Format vorliegen...
Wie kann denn sowas überhaupt in die Datenbank Einzug halten, wenn der Spaltentyp passend gewählt wird? Der sollte hier ja 'DECIMAL' sein und keinesfalls ein STRING-Typ.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Wie kann denn sowas überhaupt in die Datenbank Einzug halten, wenn der Spaltentyp passend gewählt wird? Der sollte hier ja 'DECIMAL' sein und keinesfalls ein STRING-Typ.
Oder zur Not ein Integer-Datentyp der mit Netto-Cent-Beträgen (und 3 "Nachkommastellen") arbeitet, wie das bei vielen Shop-Systemen üblich ist.
Hello,
Wie kann denn sowas überhaupt in die Datenbank Einzug halten, wenn der Spaltentyp passend gewählt wird? Der sollte hier ja 'DECIMAL' sein und keinesfalls ein STRING-Typ.
Oder zur Not ein Integer-Datentyp der mit Netto-Cent-Beträgen (und 3 "Nachkommastellen") arbeitet, wie das bei vielen Shop-Systemen üblich ist.
Hab gerade überlegt, welches Filter dafür passen würde, um den Eingabefehler im Script abzufangen:
http://de3.php.net/manual/en/filter.filters.validate.php
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
@@Bruzzler:
nuqneH
€ 1.728.99
Wie kommt das zustande?
Datenbank Eintrag durch Joomla / Virtuemart
Dann machst du etwas falsch.
Hast du wirklich "1.728.99" in der DB zu stehen? Dann solltest du vorher schon dafür sorgen, dass solch Unsinn gar nicht erst hineinkommt, ggfs. solche Nutzereingaben als ungültig abweisen.
Oder hast du 1728.99 in der DB und setzt nach dem Auslesen ein Tausendertrennzeichen?
Qapla'
Hi,
Wie bekomm ich es denn hin, dass der Tausenderpunkt unangetastet bleibt??
In dem du den Wert, den du ja sicher als Zahlenwert vorliegen hast, einfach mit number_format deinen Wünschen entsprechend formatierst, anstatt in den Eingeweiden von Strings herumzufingern.
MfG ChrisB
Hi zusammen,
wird aber auch das Tausendertrennzeichen ersetzt, is ja auch logisch. Wie bekomm ich es denn hin, dass der Tausenderpunkt unangetastet bleibt??
number_format($shippingcost, 2, ",", ".");
Hi zusammen,
wird aber auch das Tausendertrennzeichen ersetzt, is ja auch logisch. Wie bekomm ich es denn hin, dass der Tausenderpunkt unangetastet bleibt??
number_format($shippingcost, 2, ",", ".");
Jap, das klappt, vielen Dank!
Grüße
@@Bruzzler:
nuqneH
number_format($shippingcost, 2, ",", ".");
Jap, das klappt, vielen Dank!
Nicht dafür. Es ist unsinnig. Behebe lieber den Fehler, anstatt ihn zu kaschieren!
Qapla'
number_format($shippingcost, 2, ",", ".");
Jap, das klappt, vielen Dank!
Nicht dafür. Es ist unsinnig. Behebe lieber den Fehler, anstatt ihn zu kaschieren!
Zudem ist number_format() hier etwas risikoreich, da als zweites Argument eine Gleitkommazahl erwartet wird und nicht garantiert ist, dass das auch funktioniert:
var_dump((float)1.728.99);
liefert selbstverständlich eine Fehlermeldung
var_dump((float)'1.728.99');
liefert float(1.728)
var_dump(number_format((float)'1.728.99',2,',','.'));
liefert string(4) "1,73"
Ich glaube also nicht, dass das klappt.