Помогите составить регулярку выборки цен

ETNO
На сайте с 16.06.2008
Offline
117
986

Есть такая задача.

Есть куча вводимых значений цены. Пример

199.00$

122 $

111

220,99$

нужно как-то преобразовать все в значения вида

199

122

111

220

Есть регулярка которая выбирает только цифры, но тогда число 199.00 будет записано как 19900, что не верно.

Wordpress тема для заработка на партнерках (http://themeforest.net/item/rehub-directory-shop-coupon-affiliate-theme/7646339). Создание каталогов с фильтрацией, расширенный функционал обзоров, layout builder, еженедельное обновление.
LovelAss
На сайте с 05.06.2009
Offline
96
#1

[0-9\.,]+

intval($match)

siv1987
На сайте с 02.04.2009
Offline
427
#2

search: (\d+)(?:[.,]\d+)?(?:\s*\$)?

replace: $1

ETNO
На сайте с 16.06.2008
Offline
117
#3

пока не очень выходит. наверное как-то неверно вставляю.

Итак, вот заюзал вот так

$product_price = preg_replace("/[^0-9.]/","", $product_price);

Это дало результат в виде

112.00

22,22

13

А вот как теперь обработать эту переменную, чтобы откинуть знаки запятых и точек и цифры после них. При этом цена может быть и такой 112.999, т.е по кол-ву символов нельзя

siv1987
На сайте с 02.04.2009
Offline
427
#4
ETNO:
Итак, вот заюзал вот так

А выше посмотреть, не?

ETNO:
А вот как теперь обработать эту переменную

intval($product_price)

ETNO
На сайте с 16.06.2008
Offline
117
#5
siv1987:
А выше посмотреть, не?


intval($product_price)

да пробовал я так, вообще возвращает пустоту, хотя может синтаксис как-то не так сделал, хз

Х
На сайте с 15.08.2014
Offline
1
#6
ETNO:
пока не очень выходит. наверное как-то неверно вставляю.

Итак, вот заюзал вот так

$product_price = preg_replace("/[^0-9.]/","", $product_price);

Это дало результат в виде

112.00
22,22
13

А вот как теперь обработать эту переменную, чтобы откинуть знаки запятых и точек и цифры после них. При этом цена может быть и такой 112.999, т.е по кол-ву символов нельзя

запятые заменить на точки, потом использовать floor()

ну или с помощью ф-ции preg_match() выделять целую часть с помощью попадания ее в круглые скобки.

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#7

$product_price = preg_replace('@([\., ]).*@smi','', $product_price);

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
FT
На сайте с 17.08.2014
Offline
0
#8

Простейшая регулярка

/[0-9]*/

FT
На сайте с 17.08.2014
Offline
0
#9

Вот простое регулярное выражение, которое должно подойти

$summa = 122,99 $;

preg_match('/[0-9]*/', $summa, $matches);

В массиве $matches будут все совпадения. В данном случае цифра 122

siv1987
На сайте с 02.04.2009
Offline
427
#10

$summa = '122,99 $';

echo intval($summa);

echo preg_replace('/(\d+)(?:[.,]\d+)?(?:\s*\$)?/', '$1', $summa);

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий