Created
January 8, 2025 08:27
-
-
Save praul/1f05ce69df15f3c43a207b5ef8fa5dfc to your computer and use it in GitHub Desktop.
Takes every formated number (1.602,00 | 1,602.00), recognizes format and outputs float
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Danke ChatGPT | |
function parseFormattedNumber(string $numberString): float | |
{ | |
// Entferne alle Leerzeichen, um sicherzustellen, dass es keine unerwarteten Zeichen gibt | |
$numberString = str_replace(' ', '', $numberString); | |
// Überprüfe das Format: Punkt als Tausender-Trenner und Komma als Dezimaltrenner | |
if (preg_match('/^\d{1,3}(\.\d{3})*(,\d{2})?$/', $numberString) || preg_match('/^\d+(,\d{2})?$/', $numberString)) { | |
// Ersetze Punkte (Tausender-Trenner) und Komma (Dezimaltrenner) | |
$normalizedNumber = str_replace(['.', ','], ['', '.'], $numberString); | |
} | |
// Überprüfe das Format: Komma als Tausender-Trenner und Punkt als Dezimaltrenner | |
elseif (preg_match('/^\d{1,3}(,\d{3})*(\.\d{2})?$/', $numberString) || preg_match('/^\d+(\.\d{2})?$/', $numberString)) { | |
// Ersetze Kommas (Tausender-Trenner) | |
$normalizedNumber = str_replace(',', '', $numberString); | |
} else { | |
// Falls kein bekanntes Format erkannt wird, Exception werfen | |
throw new InvalidArgumentException("Ungültiges Zahlenformat: $numberString"); | |
} | |
// Konvertiere die normalisierte Zahl in einen Float | |
return (float) $normalizedNumber; | |
} | |
// Beispielnutzung: | |
try { | |
echo parseFormattedNumber("1.602,00"); // Ausgabe: 1602 | |
echo "\n"; | |
echo parseFormattedNumber("1,602.00"); // Ausgabe: 1602 | |
echo "\n"; | |
echo parseFormattedNumber("1602"); // Ausgabe: 1602 | |
echo "\n"; | |
echo parseFormattedNumber("1602.00"); // Ausgabe: 1602 | |
echo "\n"; | |
echo parseFormattedNumber("1602,00"); // Ausgabe: 1602 | |
} catch (InvalidArgumentException $e) { | |
echo "Fehler: " . $e->getMessage(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment