From 2bcbe1d0be77e885fd0f0320fe6179234e1d8569 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 4 Mar 2024 22:38:15 +0100 Subject: [PATCH] Made mouser price info parsing more flexible Austrian mouser returned some other formatted string, which caused problems on the old method. This fixes issue #540 --- .../InfoProviderSystem/Providers/MouserProvider.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/Services/InfoProviderSystem/Providers/MouserProvider.php b/src/Services/InfoProviderSystem/Providers/MouserProvider.php index bd6ca886..0dea1798 100644 --- a/src/Services/InfoProviderSystem/Providers/MouserProvider.php +++ b/src/Services/InfoProviderSystem/Providers/MouserProvider.php @@ -247,10 +247,19 @@ class MouserProvider implements InfoProviderInterface /* * Mouser API price is a string in the form "n[.,]nnn[.,] currency" * then this convert it to a number + * Austria has a format like "€ 2,10" */ private function priceStrToFloat($val): float { + //Remove any character that is not a number, dot or comma (like currency symbols) + $val = preg_replace('/[^0-9.,]/', '', $val); + + //Trim the string + $val = trim($val); + + //Convert commas to dots $val = str_replace(",", ".", $val); + //Remove any dot that is not the last one (to avoid problems with thousands separators) $val = preg_replace('/\.(?=.*\.)/', '', $val); return (float)$val; }