king-ich
Mitglied
PHP:
<?php
$str_zahl = $_GET['miete'];
Ich versuche Preiseingaben Datenbank gerecht zu formatieren:
PHP:
<?php
function float($str_zahl)
{
if(preg_match('/([0-9\.,-]+)/', $str_zahl, $array_treffer))
{
// Zahl gefunden also können wir weitermachen
$str_zahl = $array_treffer[0];
if(preg_match('/^[0-9.-\s]*[\,]{1}[0-9-]{0,2}$/', $str_zahl))
{
// Komma als Dezimal Separator
// Alle Punkte entfernen und anschließend das Komma in einen
//Punkt umwandeln
$str_zahl = str_replace('.', ' ', $str_zahl);
$str_zahl = str_replace(',', '.', $str_zahl);
return floatval($str_zahl);
}
elseif(preg_match('/^[0-9,-\s]*[\.]{1}[0-9-]{0,2}$/', $str_zahl))
{
// Punkt als Dezimal Separator
// Alle Kommata entfernen
$str_zahl = str_replace(',', ' ', $str_zahl);
return floatval($str_zahl);
}
elseif (preg_match('/^[0-9.-\s]*[\.]{1}[0-9-]{0,3}$/', $str_zahl))
{
// Es gibt nur Tausender Separatoren
// Alle Punkte enfernen
$str_zahl = str_replace('.', ' ', $str_zahl);
return floatval($str_zahl);
}
elseif (preg_match('/^[0-9,-\s]*[\,]{1}[0-9-]{0,3}$/', $str_zahl))
{
// Es gibt nur Tausender Separatoren
// Alle Kommata enfernen
$str_zahl = str_replace(',', ' ', $str_zahl);
return floatval($str_zahl);
}
else
return floatval($str_zahl);
}
else
{
return 0;
}
}
Es werden keine Fehlermeldungen geworfen. Funktionieren tut der Code aber trotzdem nicht.
Bei einer Zahl, z.B.: 1.00 ändert sich in der Darstellung bei
PHP:
<?php echo $str_zahl; ?>
nichts. Sind die RegExes falsch?
Oder bediene ich die funktion
PHP:
<?php
str_replace()
falsch?