Есть строки из них нужно вычленить цену в формате число-точка-дробная часть (если есть).
$12.34 -> 12.34
$12,34 -> 12.34
$12.00 -> 12.00
$12 -> 12
12€ -> 12
12,11€ -> 12.11
12.999€ -> 12.99
12.9€ -> 12.9
Дополнительно:
£999.99€(2) -> 999.99
Ц999,99Руб. за шт. (3) -> 999.99
999,99 Руб. за тонну (33) -> 999.99
Нашел такой код, который это делает (кроме дополнительно) на неизвестном мне языке:
private static String getPrice(String input)
{
String output = "";
Pattern pattern = Pattern.compile("\\d{1,3}[,\\.]?(\\d{1,2})?");
Matcher matcher = pattern.matcher(input);
if (matcher.find())
{
output = matcher.group(0);
}
return output;
}
У меня на php этот код не работает
preg_match("\\d{1,3}[,\\.]?(\\d{1,2})?", $str, $matches);
$price = $matches[0];
//Сам я делаю вот так:
preg_match('/\d+\.?\d*/', $str, $matches);
/* но это очень простой код, здесь не учитывается запятая вместо точки
и скорее всего дополнительные примеры не обработаются нормально,
например этот "999,99 Руб. за тонну (33)" */
$price = $matches[0];