Kris: Große Zahl mit Punkten (1000erStellen) versehen.

Da ich bei einem Script mit Riesengroßen Zahlen arbeiten (gehen bis in die Billionen), würde ich gerne diese durch 1000er Trennzeichen (Punkte) deutlicher darstellen. Nun habe ich mir mehrere Möglichkeiten mit PHP ausgedacht nur bleibe ich hängen. Ich hatte mir ansich vorgenommen die Zahl einfach in 3er Zahlen von hinten zu trennen und dann via for-schleife in eine neue Variable zu setzen und dauernd mit einem Punkt zu füllen. Hierbei hatte ich an die Funktion str_split gedacht, die jedoch dummerweise bei meinem PHP 4.xx nicht vorhanden ist. Nun wollte ich mich des chunk_splits begnügen und dann dir Leerzeichen durch Punkte ersetzen. Komischerweise funktioniert das mit meinem Code nicht. Was mache ich falsch ?

$zahl   = 12345678990
$next   = chunk_split($zahl, 3);
$old[0] = '/ /';
$new[0] = '.';
$nextone= preg_replace($old, $new, $next);

Oder findet jemand eine schnellere/bessere Möglichkeit

mfg

Kris

  1. echo $begrüßung;

    Da ich bei einem Script mit Riesengroßen Zahlen arbeiten (gehen bis in die Billionen), würde ich gerne diese durch 1000er Trennzeichen (Punkte) deutlicher darstellen. [...] Was mache ich falsch ?

    Bin ich grad zu faul zum Nachvollziehen ... :-)

    Oder findet jemand eine schnellere/bessere Möglichkeit

    ... denn es gibt number_format().

    echo "$verabschiedung $name";

    1. »»number_format().

      das es dafür auch ne eigene Funktion gibt ... hätte ich dann doch wissen können :/

      dank dir dedlix und ich hoffe bei euch erträgt man die Hitze einfacher als hier in Köln >_<

      1. Ich würde allerdings - vor allem wenn das Script auch von englischsprachigen Users benutzt wird - nicht den Punkt, sondern einen Leerraum verwenden. Punkt und Komma sind in der Hinsicht etwas verwirrend, da:

        Tausendertrennzeichen (deutsch)  : "."
        Tausendertrennzeichen (englisch) : ","

        Dementsprechend hat der Punkt ebenfalls die genau andere Bedeutung...

        1. gudn tach!

          Ich würde allerdings - vor allem wenn das Script auch von englischsprachigen Users benutzt wird - nicht den Punkt, sondern einen Leerraum verwenden.

          und ich wuerde nicht das wort "leerraum" verwenden, weil es zu missverstaendlich ist. ;-)

          Punkt und Komma sind in der Hinsicht etwas verwirrend

          ack!

          , da:

          Tausendertrennzeichen (deutsch)  : "."

          aber nicht nach din.

          Tausendertrennzeichen (englisch) : ","

          und in der schweiz: "'"

          Dementsprechend hat der Punkt ebenfalls die genau andere Bedeutung...

          und deswegen wird nach iso, din und duden empfohlen als zifferngruppierungszeichen ein (schmales) leerzeichen zu verwenden.

          mehr dazu:
          http://de.wikipedia.org/wiki/Schreibweise_von_Zahlen
          http://de.wikipedia.org/wiki/Tausendertrennzeichen

          wenn jedoch die leute, die sich die zahlen anschauen sollen, nicht zu doof fuer die wissenschaftliche notation sind, dann ist diese in vielen faellen die geschickteste variante, weil man die exponenten schneller erfassen als man viele punkte oder leerzeichen zaehlen kann.
          im englischen php-handbuch steht auch, wie man das bewerkstelligen kann.

          prost
          seth

          1. gudn tach seth_not@home,

            , da:

            Tausendertrennzeichen (deutsch)  : "."

            aber nicht nach din.

            Tausendertrennzeichen (englisch) : ","

            und in der schweiz: "'"

            ... und ich Liechtentein

            und in Perl: "_",
            aber nicht nur als Tausender-Trennzeichen ...

            MffG
            EisFuX

            1. gudn tach EisFuX!

              Tausendertrennzeichen (englisch) : ","

              und in der schweiz: "'"
              ... und ich Liechtentein

              aha, also 53276235798532 ist bei dir dann
                53Liechtentein276Liechtentein235Liechtentein798Liechtentein532.
              finde ich ehrlich gesagt jetzt nicht soo uebersichtlich und ich glaube auch nicht, dass sich das durchsetzen wird. ;-)

              und in Perl: "_",

              stand auch bereits im verlinkten wikipedia-artikel. :-p

              aber nicht nur als Tausender-Trennzeichen ...

              ok, das noch nicht (aber jetzt schon).

              prost
              seth

              1. und in der schweiz: "'"
                ... und ich Liechtentein

                aha, also 53276235798532 ist bei dir dann
                  53Liechtentein276Liechtentein235Liechtentein798Liechtentein532.
                finde ich ehrlich gesagt jetzt nicht soo uebersichtlich und ich glaube auch nicht, dass sich das durchsetzen wird. ;-)

                Wuaaa, da hab ich mich wieder mal schön vertippt. Sollte natürlich "in" und nicht "ich" heißen ...

                und in Perl: "_",
                stand auch bereits im verlinkten wikipedia-artikel. :-p

                Wieder so ein Wikipedia-Artikel, wo die Diskussionsseite spannender zu lesen ist, als der Artikel selber. ;-)

                *zurück_prost*

                EisFuX

                1. gudn tach EisFux!

                  und in Perl: "_",
                  stand auch bereits im verlinkten wikipedia-artikel. :-p

                  Wieder so ein Wikipedia-Artikel, wo die Diskussionsseite spannender zu lesen ist, als der Artikel selber. ;-)

                  ¿aeh...? die diskussionsseite zu tausendertrennzeichen finde ich jetzt nicht so spektakulaer oder spannend. meintest du die wirklich? oder sollte der smiley andeuten, dass du das ironisch meintest? auch das wuerde ich dann in anbetracht der kuerze der diskussion nicht verstehen.

                  prost
                  seth

                  1. Hallo seth,

                    Wieder so ein Wikipedia-Artikel, wo die Diskussionsseite spannender zu lesen ist, als der Artikel selber. ;-)

                    ¿aeh...? die diskussionsseite zu tausendertrennzeichen finde ich jetzt nicht so spektakulaer oder spannend. meintest du die wirklich? oder sollte der smiley andeuten, dass du das ironisch meintest? auch das wuerde ich dann in anbetracht der kuerze der diskussion nicht verstehen.

                    Ich bezog mich auf den anderen Wikipedia-Artikel,
                    hab das aber nicht dazugeschrieben -- Faulheit, Vergesslichkeit, mentale Abwesenheit, warum auch immer ...

                    MffG
                    EisFuX

                    1. gudn tach!

                      Ich bezog mich auf den anderen Wikipedia-Artikel,

                      ach so, ok. wenn du dir's dann mal so richtig dreckig geben willst, empfehle ich Wikipedia Diskussion:Schreibweise von Zahlen.

                      prost
                      seth

    2. echo $begrüßung;

      Bin ich grad zu faul zum Nachvollziehen ... :-)

      Na gut, ich will mal nicht so sein. Sowohl str_split() als auch chunk_split() zählen von links, die Tausender-Trennzeichen-Stellen werden aber von rechts gezählt.

      Außerdem (Teil 1):

      Komischerweise funktioniert das mit meinem Code nicht.

      Ein bisschen genauer darfst du schon beschreiben, was passiert. In diesem Fall war der Fehler offensichtlich, doch "funktioniert nicht" ist normalerweise keine ausreichende Fehlerbeschreibung.

      Außerdem (Teil 2):

      Das Email-Feld ist kein Pflichtfeld. Wenn du keine Email-Adresse angeben möchtest, lass es bitte leer anstatt es mit Müll zu füllen.

      echo "$verabschiedung $name";

  2. Hallo Kris,

    auch wenn du die Lösung mit number_format() schon gefunden hast:

    Da ich bei einem Script mit Riesengroßen Zahlen arbeiten (gehen bis in die Billionen), würde ich gerne diese durch 1000er Trennzeichen (Punkte) deutlicher darstellen. Nun habe ich mir mehrere Möglichkeiten mit PHP ausgedacht nur bleibe ich hängen. Ich hatte mir ansich vorgenommen die Zahl einfach in 3er Zahlen von hinten zu trennen und dann via for-schleife in eine neue Variable zu setzen und dauernd mit einem Punkt zu füllen. Hierbei hatte ich an die Funktion str_split gedacht, die jedoch dummerweise bei meinem PHP 4.xx nicht vorhanden ist.

    Du solltest dir mal das PEAR-Paket Compat anschauen. Da findest du eine ganze Menge von PHP5-Funktionen, die für PHP4 nachgebaut worden sind.

    Und wenn du dir den Quellcode für str_split() anschaust, wirst du feststellen, dass man sowas auch mit der Zählung von hinten schnell selbst basteln kann:

    function foxy_str_rsplit(  
      $my_string = '',  
      $split_length = 1  
    ) {  
      if($split_length < 1) return(FALSE);  
      if( $split_length >= strlen($my_string) ) return( array($my_string) );  
      if($my_string == '') return( array('') );  
      
      // die folgenden 2 Zeilen sind das ganze Geheimnis:  
      if( ($start = strlen($my_string) % $split_length) > 0 )  
        $chunks[] = substr($my_string, 0, $start);  
      
      for($offset=$start; $offset < strlen($my_string); $offset = $offset + $split_length) {  
        $chunks[] = substr($my_string, $offset, $split_length);  
      }  
      return($chunks);  
    }  
    
    

    MffG
    EisFuX

    1. hi,

      Du solltest dir mal das PEAR-Paket Compat anschauen. Da findest du eine ganze Menge von PHP5-Funktionen, die für PHP4 nachgebaut worden sind.

      Dann soll er sich doch lieber PHP 5 anschauen (bzw. sich nach einem Hoster damit um-.)

      scnr,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }