Регулярные выражения, формирование цены

Добрый день, есть исходные цены
$prices = array('Ваша цена 1656 руб.', 'Цена: 780 руб.', 'Цена: 4 107руб.', 'Цена: 2,490.00руб. ', 'Цена: 3900.00 р. ', '1924 руб.', '1340', '3 240.00 руб.', '2640 руб.', '2 370 руб', 'Цена: 1 790 руб. ', '2890 руб.', '2300 руб.', '630 руб.', '1,796.00.');

Удаляю буквы
$rule = array("/[^\d+(\.\d{0,})?]/");
$prices = preg_replace($rule, '', $prices);

Получаю что вроде
1656.
780.
4107.
2,490.00.
3900.00.

А надо чтобы было
1656
780
4107
2490
3900

Есть ли гововые библиотеки для подобного формирования? Или регэкспы конечно же?
  • Вопрос задан
  • 4498 просмотров
Пригласить эксперта
Ответы на вопрос 2
@VovanZ
Вариант2. Сначала удалить всё, кроме цифр и точек, а потом, с помощью trim() удалить точки из начала и из конца.
$rule = array("/[^0-9.]/");
$prices = preg_replace($rule, '', $prices);
$prices = array_map(function($price) {
    return trim($price, '.');
}, $prices);
Ответ написан
@VovanZ
А не проще ли удалить всё, кроме цифр?
$rule = array("/[^0-9]/");
$prices = preg_replace($rule, '', $prices);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы