EisFuX: sprintf() und number_format()

Beitrag lesen

Hallo Maresa,

ich suche eine Funktion, die mir einen Preis in folgendes Format formatiert:
XX,XX (also mit Komma getrennt und 2 Dezimalstellen nach dem Komma, die Anzahl der Stellen vor dem Komma ist irrelevant)
Die Funktion muss Komma- und Punktwerte verarbeiten können.

In PHP gibt es mindestens zwei Möglichkeiten, eine Zahl mit Nachkommastellen zu formatieren:
number_format()
und
sprintf()

Mit sprintf() könnte die Funktion so realisiert werden:

  
function preis_format(  
  $wert  
) {  
  // Komma auswerten  
  return( sprintf('%01,2f', $wert) );  
}

... und mit number_format() so:

  
function preis_format(  
  $wert  
) {  
  // Komma auswerten  
  return( number_format($wert, 2, ',') );  
}

Den Kommentar "Komma auswerten" kannst du in beiden Funktionen so ersetzen:

  
  // Hat $wert das richtige Format?  
  if( !preg_match('/\A\d+([,.]\d+)\Z/') ) {  
    trigger_error('$wert entspricht nicht den Vorgaben!', E_USER_WARNING);  
    return(FALSE);  
  }  
  
  // Zahlen mit Komma in richtige "Float"-Zahlen umwandeln  
  if( !is_float($wert) ) {  
    list($int, $frac) = explode(',', $wert);  
    $wert = floatval($int.'.'.$frac);  
  }  

MffG
EisFuX

--
Auch meine Hosenträger sind intelligent, in dem Sinne, dass man sie regulieren kann. Sie besitzen ein adaptives Verhalten.
Stanisław Lem