[Funktion] Probleme mit Einfügen eines Zeichens in einen String (1000er Trennung)

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

  • [Funktion] Probleme mit Einfügen eines Zeichens in einen String (1000er Trennung)

    Hallo,

    folgendes Problem:

    Ich will eine Zahl mit 1000er Trennzeichen ausgeben.
    Also aus

    10000 --> 10.000 bzw. aus
    2342323 --> 2.342.323

    Nach einiger Suche im Manual bin ich nur auf die Lösung gekommen,
    str_split() zu verwenden. Damit müßte ich aber den String zerlegen,
    den Punkt einfügen und dann wieder zusammensetzen.
    Gibt es eine Möglichkeit, den Punkt / die Punkte direkt an einer
    bestimmten Stelle des Strings einzufügen?
    Alles, was ich gefunden habe, hat immer nur etwas ersetzt
    (explode, eregi_replace usw.)
    number_format() macht ein Komma oder Space, wenn ich das
    ersetze, hab ich wieder zwei Schritte, außerdem ist mir da nicht
    ganz klar, was mit den richtigen Nachkommastellen passiert.

    Im Falle einer Nachkommastelle (kommt ja wohl aus der Datenbank so: 100000.55)
    Soll es dann so aussehen:
    100.000,55

    (Kundenwunsch, sorry!)

    Die Zahlen sind INT bzw. FLOAT.

    Es läuft wohl darauf hinaus, daß ich nicht umhinkomme,
    die Zahl wegen eventueller Nachkommastellen
    ohnehin zu zerlegen, oder?

    Ich muß mal schauen, ob ich Nachkommastellen bei solchen Zahlen
    vielleicht einfach verhindere, das würde die Sache sicher
    vereinfachen.

    Vielen Dank,
    Grüße,
    Coniaric
    Gruß, Coni
    ~~ codito ergo sum - ich code, also bin ich! ~~

  • #2
    number_format

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Warum so kompliziert ? Schau dir mal number_format() an

      Gruss

      tobi
      EDIT:

      tja wir Schweizer sind echt langsam

      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        Äh.... habt Ihr meinen Text zuende gelesen?
        Oder hab ich bei number_format was übersehen?
        Gruß, Coni
        ~~ codito ergo sum - ich code, also bin ich! ~~

        Kommentar


        • #5
          Original geschrieben von Coniaric
          Äh.... habt Ihr meinen Text zuende gelesen?
          Oder hab ich bei number_format was übersehen?
          Ja.
          Ja.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            string number_format ( float $number [, int $decimals [, string $dec_point, string $thousands_sep]] )
            1. die Float Zahl aus der DB
            2. Anzahl Dezimalstellen
            3. Seperator für Dezimalstellen
            4. 1000-er Trenner

            imho genau das was du willst

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Original geschrieben von Coniaric
              Äh.... habt Ihr meinen Text zuende gelesen?
              Oder hab ich bei number_format was übersehen?
              du hast was übersehen.
              PHP-Code:
              $number 1234.56;
              $num number_format($number2',''.'); 
              tja wir Schweizer sind echt langsam
              OffTopic:
              nicht immer ;-)


              gruß
              peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                Zum 2ten Ja:

                Aha: number_format($number, -2, ',', ' ');
                kann mal also selber wählen! Das hab ich übersehen, danke!

                Gut, aber für die "echten" Nachkommastellen muß ich die Zahl trotzdem zerlegen, oder?
                Gruß, Coni
                ~~ codito ergo sum - ich code, also bin ich! ~~

                Kommentar


                • #9
                  Gut, aber für die "echten" Nachkommastellen muß ich die Zahl trotzdem zerlegen, oder?
                  Was sind "echte" Nachkommastellen und warum -2 als Dezimalstellenargument

                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    Das -2 ist ein tippfehler...
                    Berücksichtigt number_format() Kommastellen?

                    z.B. 100232,32

                    Ich werd es einfach ausprobieren.

                    Danke aber für die Tipps.
                    Gruß, Coni
                    ~~ codito ergo sum - ich code, also bin ich! ~~

                    Kommentar


                    • #11
                      Hm gut, funktionier ganz gut.
                      Wäre noch schöner, wenn das ,00 wegfällt, sollte es keine Nachkommastelle geben.
                      Geht das auch mit number_format() ?
                      Gruß, Coni
                      ~~ codito ergo sum - ich code, also bin ich! ~~

                      Kommentar


                      • #12
                        imho nein. dafür reicht ein
                        PHP-Code:
                        str_replace (',00','',...) 
                        gruß
                        peter
                        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                        Meine Seite

                        Kommentar


                        • #13
                          Hey, danke!
                          Hatte es so gelöst, daß ich auf ein Komma überprüft hab und dann

                          wenn vorhanden $komma=0;
                          wenn nicht vorhanden $komma=2;

                          number_format($number, $komma, ',', ' ');


                          Aber Deine Lösung ist eleganter.
                          Gruß, Coni
                          ~~ codito ergo sum - ich code, also bin ich! ~~

                          Kommentar


                          • #14
                            Hatte es so gelöst, daß ich auf ein Komma überprüft hab
                            bei einem float hast du aber einen punkt und kein komma. erst die eigentliche zahl prüfen und dann formatieren.

                            gruß
                            peter
                            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                            Meine Seite

                            Kommentar


                            • #15
                              Jepp, weiß ich.
                              Sieht jetzt so aus:

                              PHP-Code:
                               $test=100000.10;
                               
                              $test=number_format($test2',''.');
                               
                              $test=str_replace (',00','',$test); 
                              100000.10 gibt jetzt 100.000,10 aus und
                              100000.00 gibt 100.000 aus.

                              Funktioniert.
                              Jetzt nur noch in "schön" machen.
                              Danke!

                              EDIT:

                              Da die Zahlen aus der Datenbank kommen, hab ich ja
                              immer einen . als Kommastelle, falls vorhanden. Müßte so also immer hinhauen.

                              Zuletzt geändert von Coniaric; 10.05.2007, 11:48.
                              Gruß, Coni
                              ~~ codito ergo sum - ich code, also bin ich! ~~

                              Kommentar

                              Lädt...
                              X