Bruzzler: String Replace - nur "zweites" Komma ersetzen..

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

  1. Meine Zahlenausgabe ist im Moment:

    € 1.728.99

    Wie kommt das zustande?

    1. Meine Zahlenausgabe ist im Moment:

      € 1.728.99

      Wie kommt das zustande?

      Datenbank Eintrag durch Joomla / Virtuemart

      1. 'ǝɯɐ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

        --
        HTML, was ist das? Ein neues Männermagazin? Css.., was es alles gibt!
        1. 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

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. 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.

            1. 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

              --
               ☻_
              /▌
              / \ Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
      2. @@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'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
  2. 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

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  3. 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, ",", ".");

    1. 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

      1. @@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'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. 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.