За последние 24 часа нас посетили 84939 программистов и 5460 роботов. Сейчас ищут 2804 программиста ...

Парсер чисел

Тема в разделе "PHP для новичков", создана пользователем EXEL, 30 июн 2016.

  1. EXEL

    EXEL Новичок

    С нами с:
    30 июн 2016
    Сообщения:
    4
    Симпатии:
    0
    Народ подскажите как написать парсер чисел в документе txt. В котором надо найти все числа с окончанием .00 и вот эти числа надо перевести в рубли и копейки разделив на 10000.
     
  2. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.599
    Симпатии:
    206
    мало информации. Как выглядит файл?
     
  3. EXEL

    EXEL Новичок

    С нами с:
    30 июн 2016
    Сообщения:
    4
    Симпатии:
    0
    Таблицы разные и их много эта для примера[​IMG]
     
  4. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.599
    Симпатии:
    206
    Понятно. Подожди, пока придёт кто-нибудь, кто умеет регулярки.
     
  5. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    -документе txt
    file_get_contents()

    -найти все числа с окончанием .00
    preg_match_all('/\d+\.00/', )
     
  6. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    @EXEL лучше исходный файл прикрепи, по картинке сложнее

    PHP:
    1. <?php
    2. if(preg_match_all('/(\d+)\.00/', '56756.98 546456.43 56757.00 7.00 000.00', $output_array)) {
    3.     echo '<pre>';
    4.     var_export($output_array);
    5.     echo '</pre>';
    6. }
     
    #6 denis01, 30 июн 2016
    Последнее редактирование: 30 июн 2016
  7. EXEL

    EXEL Новичок

    С нами с:
    30 июн 2016
    Сообщения:
    4
    Симпатии:
    0
    http://my-files.ru/vsi1iw
     
  8. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    Не судьба к форуму было прикрепить

    PHP:
    1. <?php
    2. $text = <<<EOF
    3. ┌─────────────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┐
    4. │                     │            │            │            │            │            │            │            │            │            │            │
    5. │                     │            │            │            │            │            │            │            │            │            │            │
    6. ├─────────────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
    7. │_________1___________│_____2______│_____3______│_____4______│_____5______│_____6______│_____7______│_____8______│_____9______│_____10_____│_____11_____│
    8.    4 З/пл по тар.ставк  13588091.00   7525091.00 140582591.00                           161695773.00                                                    
    9.    5 Премия произв.рез   3939360.00   3907200.00  33922221.00                            41768781.00                                                    
    10.    9 Отпускные(тек.мес    434677.00   8255870.00  11741550.00                            20432097.00                                                    
    11.   11 Отпускные(след.м)   1521370.00   2688391.00  31185372.00                            35395133.00                                                    
    12.   20 Hадб.за классн.     1629273.00                                                       1629273.00                                                    
    13.   28 Надб.выс.дост.тр.                2233636.00  28796362.00                            31029998.00                                                    
    14.   43 Доп.отпуск за НРД                1114866.00   3740923.00                             4855789.00                                                    
    15.   45 Пpем.за экон.топл     31527.00                                                         31527.00                                                    
    16.   48 Пpем.за выяв.мощн                1010000.00                                          1010000.00                                                    
    17.   55 Мат.пом.ух.в отп.   5484000.00   9204000.00  60318000.00                            75006000.00                                                    
    18.   58 М/пом.жен.до3/х л                              630000.00                              630000.00                                                    
    19.   62 Мат.пом.к гос.пр.                1050000.00                                          1050000.00                                                    
    20.   63 Прочие доплаты                                 210000.00                              210000.00                                                    
    21.   64 Пос.ух.pеб.до 3 л                             3650200.00                             3650200.00                                                    
    22.   70 Пос. врем.нетруд.                             1828883.00                             1828883.00                                                    
    23.   94 Суммы добр.страх     330000.00    110000.00   3190000.00                             3630000.00                                                    
    24. 308 Доп.поощ.отп.тек    1086693.00    371622.00   7033471.00                             8491786.00                                                    
    25. 309 Доп.поощ.отп.след                1486488.00   2318836.00                             3805324.00                                                    
    26.                                                                                                                                                        
    27. 101 Аванс               8996000.00   3988000.00  89787200.00                           102771200.00                                                    
    28. 102 Подоходный налог    2375229.00   3626112.00  32247050.00                            38248391.00                                                    
    29. 106 Пpофсоюзные взн.     222310.00    285932.00   2595314.00                             3103556.00                                                    
    30. 110 Межвыплаты          7700000.00  21050000.00  71100000.00                            99850000.00                                                    
    31. 112 Кваpтплата                                     192200.00                              192200.00                                                    
    32. 119 Пенсионный фонд      222310.00    296432.00   2601614.00                             3120356.00                                                    
    33. 121 Ссуда/инд.стp-во                               253999.00                              253999.00                                                    
    34. 123 Ссуда мол. семье                               750000.00                              750000.00                                                    
    35. 125 %на индив.стр-во                               124354.00                              124354.00                                                    
    36. 133 Добр.пенс.страх.     330000.00    110000.00   3190000.00                             3630000.00                                                    
    37. 152 Бюджет прожит.мин                            30300000.00                            30300000.00                                                    
    38.                                                                                                                                                        
    39.                                                                                                                                                        
    40. Долг за работающими...                                                                                                                                  
    41. Сумма к выдаче........   8199142.00   9600688.00  96006678.00                           113806508.00                                                    
    42. Всего начислено.......  28044991.00  38957164.00 329148409.00                           396150564.00                                                    
    43. Всего удержано........  19845849.00  29356476.00 233141731.00                           282344056.00                                                    
    44.                                                                                                                                                        
    45. Фонд оплаты...........  27714991.00  38847164.00 319849326.00                           386411481.00                                                    
    46.                                                                                                                                                        
    47. Фонд потребления......                                                                                                                                  
    48.                          
    49. EOF;
    50.  
    51. if(preg_match_all('/(\d+)\.00/', $text, $output_array)) {
    52.     foreach ($output_array[1] as $key => $value) {
    53.         $value = $value/10000;
    54.         echo $value."<br>";
    55.     }
    56. }
     
  9. EXEL

    EXEL Новичок

    С нами с:
    30 июн 2016
    Сообщения:
    4
    Симпатии:
    0
    я поправил пересчёт на $value = round($value/10000, 2); Вопрос а как сделать чтобы оно находило эти цифры в тхт файле и автоматом заменяла?
     
  10. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.213
    Симпатии:
    1.711
    Адрес:
    Молдова, г.Кишинёв
    Замена в самом тексте
    PHP:
    1. <?php
    2. $text = <<<EOF
    3. ┌─────────────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┬────────────┐
    4. │                     │            │            │            │            │            │            │            │            │            │            │
    5. │                     │            │            │            │            │            │            │            │            │            │            │
    6. ├─────────────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┼────────────┤
    7. │_________1___________│_____2______│_____3______│_____4______│_____5______│_____6______│_____7______│_____8______│_____9______│_____10_____│_____11_____│
    8.    4 З/пл по тар.ставк  13588091.00   7525091.00 140582591.00                           161695773.00                                                    
    9.    5 Премия произв.рез   3939360.00   3907200.00  33922221.00                            41768781.00                                                    
    10.    9 Отпускные(тек.мес    434677.00   8255870.00  11741550.00                            20432097.00                                                    
    11.   11 Отпускные(след.м)   1521370.00   2688391.00  31185372.00                            35395133.00                                                    
    12.   20 Hадб.за классн.     1629273.00                                                       1629273.00                                                    
    13.   28 Надб.выс.дост.тр.                2233636.00  28796362.00                            31029998.00                                                    
    14.   43 Доп.отпуск за НРД                1114866.00   3740923.00                             4855789.00                                                    
    15.   45 Пpем.за экон.топл     31527.00                                                         31527.00                                                    
    16.   48 Пpем.за выяв.мощн                1010000.00                                          1010000.00                                                    
    17.   55 Мат.пом.ух.в отп.   5484000.00   9204000.00  60318000.00                            75006000.00                                                    
    18.   58 М/пом.жен.до3/х л                              630000.00                              630000.00                                                    
    19.   62 Мат.пом.к гос.пр.                1050000.00                                          1050000.00                                                    
    20.   63 Прочие доплаты                                 210000.00                              210000.00                                                    
    21.   64 Пос.ух.pеб.до 3 л                             3650200.00                             3650200.00                                                    
    22.   70 Пос. врем.нетруд.                             1828883.00                             1828883.00                                                    
    23.   94 Суммы добр.страх     330000.00    110000.00   3190000.00                             3630000.00                                                    
    24. 308 Доп.поощ.отп.тек    1086693.00    371622.00   7033471.00                             8491786.00                                                    
    25. 309 Доп.поощ.отп.след                1486488.00   2318836.00                             3805324.00                                                    
    26.                                                                                                                                                        
    27. 101 Аванс               8996000.00   3988000.00  89787200.00                           102771200.00                                                    
    28. 102 Подоходный налог    2375229.00   3626112.00  32247050.00                            38248391.00                                                    
    29. 106 Пpофсоюзные взн.     222310.00    285932.00   2595314.00                             3103556.00                                                    
    30. 110 Межвыплаты          7700000.00  21050000.00  71100000.00                            99850000.00                                                    
    31. 112 Кваpтплата                                     192200.00                              192200.00                                                    
    32. 119 Пенсионный фонд      222310.00    296432.00   2601614.00                             3120356.00                                                    
    33. 121 Ссуда/инд.стp-во                               253999.00                              253999.00                                                    
    34. 123 Ссуда мол. семье                               750000.00                              750000.00                                                    
    35. 125 %на индив.стр-во                               124354.00                              124354.00                                                    
    36. 133 Добр.пенс.страх.     330000.00    110000.00   3190000.00                             3630000.00                                                    
    37. 152 Бюджет прожит.мин                            30300000.00                            30300000.00                                                    
    38.                                                                                                                                                        
    39.                                                                                                                                                        
    40. Долг за работающими...                                                                                                                                  
    41. Сумма к выдаче........   8199142.00   9600688.00  96006678.00                           113806508.00                                                    
    42. Всего начислено.......  28044991.00  38957164.00 329148409.00                           396150564.00                                                    
    43. Всего удержано........  19845849.00  29356476.00 233141731.00                           282344056.00                                                    
    44.                                                                                                                                                        
    45. Фонд оплаты...........  27714991.00  38847164.00 319849326.00                           386411481.00                                                    
    46.                                                                                                                                                        
    47. Фонд потребления......                                                                                                                                  
    48.                          
    49. EOF;
    50.  
    51. echo "<pre>";
    52. echo preg_replace_callback('/((\d+)\.00)/', function($matches) {
    53.     return $matches[2]/10000;
    54. }, $text);
    55. echo "</pre>";
     
    EXEL нравится это.