[PHP] number_format()

Dieses Thema im Forum "Webentwicklung" wurde erstellt von newcomer2k6, 15. Mai 2009 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 15. Mai 2009
    number_format()

    Hallo,

    ich habe ein Formular mit einem Preis. Dieser Preis soll ausgegeben werden mit einer Tausendertrennstelle und ein komma.

    So: 1.500,69 €

    das mache ich mit number_format

    PHP:
    value="<?=number_format ( $obj -> gebuehr 2 ',' '.' ?>"
    Meine Mysql Tabelle ist Decimal (8,2). Wie schaffe ich es am besten, das diese Zahl im Formular in die Datenbank geht? Bei 1.500,69 macht er immer 1.50 drauß. Mir ist schon klar, das die datenbank mit einem Punkt arbeitet. Aber wie realisiere ich es am besten? die zahlen durch str_replace hauen? Was ist wenn der nächste Anwender 1 500,69 € eingibt?

    Wie ist die beste lösung?

    Gruß
     
  2. 15. Mai 2009
    AW: number_format()

    Du kannst es z.B. mit
    PHP:
    $zahl  "1 540,49" ;
    if (
    preg_match ( "/^(([0-9]{1,}).([0-9]{1,})).([0-9]{2})$/i" $zahl ))
      
    $zahl  preg_replace ( "/^(([0-9]{1,}).([0-9]{1,})).([0-9]{2})$/i" "$2$3.$4" $zahl );
    print 
    $zahl ;
    umwandeln, dann wird die Zahl zu "1540.49", so wie die Datenbank das auch will/braucht.
    Allerdings musst du in dieser Variante vorher erst überprüfen, ob eine Tausendertrennung stattfindet (bzw. allgemein eine Trennung vor dem eigentlichen Komma).
     
  3. 18. Mai 2009
    AW: number_format()

    hab ne super funktion gefunden:

    PHP:
    function  get_float  ( $value )
      {
      
    // enthaltene Leerzeichen entfernen
      // ausschließlich als 1000er-Trennzeichen verw. Zeichen können hier vorab ersetzt werden
      
    $value  str_replace  ( ' '  ''  $value );
     
      
    // suche letztes nichtnumerisches Zeichen
      
    preg_match  ( '#([^0-9])[0-9]+$#'  $value  $found ); 
     
      
    // $found[1] ist jetzt ein Trennzeichen (oder NULL)
     
      // Trennzeichen gefunden
      
    if ( false  === empty ( $found [ 1 ])) {
     
        
    // mehr als ein Trennzeichen gefunden - kann kein Dezimaltrennzeichen sein
        
    if ( substr_count  ( $value  $found [ 1 ]) >  1 ) {
          
    // entferne alle Trennzeichen, Rückgabe
          
    return ((float)  str_replace  ( $found [ 1 ] ,  ''  $value ));
          }
     
        
    // Tausender-Zeichen entfernen Dezimaltrennzeichen nach . vereinheitlichen
        
    switch ( $found [ 1 ])
          {
          case 
    ',' :
            
    $value  str_replace  ( '.'  ''  $value );
            
    $value  str_replace  ( ','  '.'  $value );
            break;
     
          case 
    '.' :
            
    $value  str_replace  ( ','  ''  $value );
            break;
          }
        }
     
      return ((float) 
    $value );
      }
    Quelle: http://www.php.de/wiki-php/index.php/Float_vereinheitlichen
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.