Geldbetrag umformatieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Geldbetrag umformatieren

    Hi. Ich hab da eine Art Artikelverwaltung.
    Da jeder den Geldbetraganders eingibt muss ich den umformatieren.
    Ich zerbrech mir gerade den Kopf mit ereg und replace und was weiss ich noch alles und versuch alle Eventualitäten so optimal wie möglich abzufangen.
    Jetzt wollt ich mal fragen ob jemand sowas schon mal gemacht hat - bestimmt doch - und mir den Code vlt. zukommen lassen würde ... oder mir zumindest mal nen konkreteren Tipp geben könnt.

    Es sollten alle 1000er-Trennzeichen (Punkt bei uns und auch Komma für U.S.) herausgefiltert werden.
    Zudem sollte 2 Stellen nach dem Dezimal-Komma alles weggeschnitten werden um Währungszeichen zu entfernen
    Der Fall das kein Dezimal-Komma (oder Punkt bei U.S.) sollte aber auch berücksichtigt werden
    Auch der Fall, dass das Währungssymbol vorne steht.

    Im Resultat sollte dann ein String wie dieser "1234,56" bzw. ohne Dezimalstellen "1234,00" rauskommen.
    Hoffe jemand hat was für mich.
    Thx

  • #2
    number_format() ?
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      print_f() ?
      Beantworte nie Threads mit mehr als 15 followups...
      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

      Kommentar


      • #4
        öhhh ... geil ... kannte ich noch nicht.
        asusprobiert und als super empfunden )

        hmm ... hast noch ne idee wie ich verschiedenste Währungszeichen (EUR, €, ...) vor und dahinter abfangen kann ohne alle möglichkeiten abzufragen?
        Also eigentl alles vor der ersten und hinter der letzten Zahl abschneiden

        Kommentar


        • #5
          z.B. mit preg_match

          Kommentar


          • #6
            öhhh also mit dem print_f kann ich nix anfangen. das soll nicht ausgegeben sondern in die DB
            das number_format war schon richtig.

            Das Problem damit ist nur, wenn es schon "richtig" formatiert ist 1,99 dann macht er 1,00 draus.
            Syntax: $temp=number_format($zahl, 2, ',', '');
            Da muss ich dann wieder abfangen ob es mit dem Dezimalzeichen "," oder "." formatiert ist.
            Also wieder zurück zu meiner ersten Bitte. Ist schließlich was wo immer wieder gebraucht wird sobald irgendwo was mit einheitlichen Geldbeträgen gemacht wird und ist sicherlich schon ein paar mal realisiert worden.

            Kommentar


            • #7
              öhhh also mit dem print_f kann ich nix anfangen.
              dann lies das manual und setz ein s davor

              Kommentar


              • #8
                dann sollst du schon bei der Eingabe sowas abfangen. Schau mal in Codes Schnippseln vorbei, dort habe ich was mit Datum gepostet, mit einer kleinem Modifizierung könntest du dann einsetzen.

                Kommentar


                • #9
                  @asp2php

                  preg_match iss ja net verkehrt. dacht ich auch schon dran. aber wiedermal ist da das problem, dass ich alle eventualitäten wie so ein wicht seinen betrag einträgt abfangen muss. lieber wärs mir von hinten an die sache ran zu gehen, also nur das zu nehmen was auch eine zahl ist, incl. Punkt und Komma.

                  Kommentar


                  • #10
                    @TobiaZ

                    ich meinte net dass ich net weiss was print_f macht sondern dass mir das hier gar nix bringt

                    Kommentar


                    • #11
                      Original geschrieben von Krysis
                      das soll nicht ausgegeben sondern in die DB das number_format war schon richtig.
                      wenn es in die DB soll, ist number_format() nicht wirklich sinnvoll. in der DB wird nur die zahl gespeichert. nf() nimmst du dann nur bei der ausgabe.

                      wenn du einen string in eine zahl wanden willst, kannst du das z.b. so machen ....
                      PHP-Code:
                      <?php

                      $zahl 
                      '22.3354 EUR';
                      // $zahl = 'a 22.3354 EUR'; // sowas ist böse. ;-)
                      echo $zahl.'<br />';
                      $zahl = (float)$zahl;
                      echo 
                      $zahl;

                      ?>
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        Jo. aber genau um das 'Böse' gehts mir.
                        Mit float wird mir dann aber auch die nachkommastellen abgeschnitten.

                        @asp2php JS wollt ich eigentl vermeiden
                        na hilft wohl alles nix. werd mir dann halt doch den kopf zermatern und selber mal nen script zusammenprügeln. schön wirds net aber funzen wirds - irgendwann (

                        Kommentar


                        • #13
                          du kannst mit sprintf wunderbar formatieren. ggf besser als mit nf().

                          warum lässt du die leute überhaupt € / EUR oder so eingeben? Naja, egal. aber du kannst doch einfach den teil rausziehen, den du brauchst, formatierst ggf. um und gut.

                          Kommentar


                          • #14
                            das problem ist, dass die nicht nur von hand eingeben sondern noch ne variante mit txt und csv oder cvs ... welches auch immer ... dazu kommt. das können dann recht viele artikel sein die die leut möglichst ohne umformatieren zu müssen hochschieben können. Da das von aller Herren Länder ist, wo ich null plan hab was die für Sonderglumb machen wollt ich eigentl was wo alles abgedeckt ist.
                            Meine Hoffnung war halt, dass es sowas vlt. schon gibt.
                            Aber wie gesagt, mach ichs halt selber. Werds dann auch braf in die Code-Schnipsel stecken
                            thx nochmal an alle

                            Kommentar


                            • #15
                              wenn du davon ausgehen kannst, dass alles euro ist, ist ja kein problem. wenn nicht, musste halt noch die einheit parsen...

                              sollte alles mit preg_match zu machen sein...

                              Kommentar

                              Lädt...
                              X