Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Выкорябывание цены из строки. Нужна помощь с регуляркой / 4 сообщений из 4, страница 1 из 1
20.05.2017, 23:18
    #39456731
eualexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выкорябывание цены из строки. Нужна помощь с регуляркой
Добрый день,
Бьюсь над задачей все никак. функция написана но на каких то значениях выдает не то что нужно.
суть приходят прайсы в формате xls, проблема со значениями в колонке цена. каждый пляшет как хочет. вариант отображения зависит от настроек типа данных в ячейке. на примере стоимости 1000 может быть

1 000
1,000
1 000,00
1 000,00 руб.
1,000.00 р.
и т.д. вариантов масса.

Задача нужно в переменную затолкать именно 1000 не зависимо от входного варианта.
Код: php
1.
$pr =preg_replace("/[^,0-9]/", '', $sellerPrice);


при входе из 1 000,00 руб. получает вообще 1,000

Я уже мозги сломал особенно на вышеприведенном варианте почему выходит 1 я никак не пойму. помогите пожалуйста.
Спасибо.
...
Рейтинг: 0 / 0
21.05.2017, 13:16
    #39456841
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выкорябывание цены из строки. Нужна помощь с регуляркой
eualexey,
если копейки всегда по нулям, то
Код: php
1.
$pr = preg_replace('#\D(?:00\D*$)?#', '', $sellerPrice);
...
Рейтинг: 0 / 0
24.05.2017, 17:22
    #39459071
eualexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выкорябывание цены из строки. Нужна помощь с регуляркой
скукотища,

Спасибо тебе добрый человек!!!
немного изменил, все идеально работает НО! я так и не понял почему работает и что вообще если на человеческий язык переводить написано в регулярке

Код: php
1.
preg_replace('#\D(?:\d{0,2}\D*$)?#', '', $price);



в результате что ни скармливай выдает то что нужно
Примеры ключ - то что скармливолось, значение - результат обработки регулярки
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Array
(
    [1000] => 1000
    [1000.] => 1000
    [1000,00] => 1000
    [1000.00] => 1000
    [1.000,00] => 1000
    [1,000.00] => 1000
    [1000 руб] => 1000
    [1000,00 руб] => 1000
    [1000.00 руб] => 1000
    [1.000,00 руб] => 1000
    [1,000.00 руб] => 1000
    [1000 руб.] => 1000
    [1000,00 руб.] => 1000
    [1000.00 руб.] => 1000
    [1.000,00 руб.] => 1000
    [1,000.00 руб.] => 1000
    [1000,23 руб.] => 1000
    [1000.14 руб.] => 1000
    [1.000,24 руб.] => 1000
    [1,000.23 руб.] => 1000
    [1000,3 руб.] => 1000
    [1000.4 руб.] => 1000
    [1.000,4 руб.] => 1000
    [1,000.2 руб.] => 1000
    [231000 руб.] => 231000
    [2221000,3 руб.] => 2221000
    [321000.4 руб.] => 321000
    [13.3400,4 руб.] => 133400
    [112,020.2 руб.] => 112020
    [1,000.23 руб] => 1000
    [1000,3 руб] => 1000
    [1000.4 руб] => 1000
    [1.000,4 руб] => 1000
    [1,000.2 руб] => 1000
    [231000 руб] => 231000
    [2221000,3 руб] => 2221000
    [321000.4 руб] => 321000
    [13.3400,4 руб] => 133400
    [112,020.2 руб] => 112020
)
1
...
Рейтинг: 0 / 0
24.05.2017, 23:46
    #39459201
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выкорябывание цены из строки. Нужна помощь с регуляркой
eualexey,
Код: php
1.
2.
3.
4.
5.
6.
7.
\D                  // нечисловой символ
(?:                 // группа, не добавляемая в массив matches
    \d{0,2}         // ни одной, одна или две цифры
    \D*             // ноль или более нечисловых символов
    $               // конец строки
)
?                   // ни одного или один предшествующий элемент, аналог (.....){0,1}
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Выкорябывание цены из строки. Нужна помощь с регуляркой / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]