Прочитать спецификации c блоков TXT php и извлечь значения - PullRequest
0 голосов
/ 04 марта 2020

Я занимаюсь социальным обслуживанием, идея состоит в том, чтобы автоматизировать процесс. Я уже собираю другие значения с помощью регулярных выражений, например:

<?php function LeerEncabezado() {

$fh = fopen('RPREGFM_________007_001.txt', 'r') or die('lel'); $file =
str_replace(',', '',
file_get_contents("RPREGFM_________007_001.txt")); $f =
fopen("RPREGFM_________007_001.txt", "w"); fwrite($f, $file);
fclose($f); while (!feof($fh)) {
    $line = fgets($fh); 


//Intermedio
    if (preg_match('/INTERMEDIO (?<cfintermedio>[\w]+.+)/i', $line, $r1)) {
        $CFINTERMEDIO = substr($r1['cfintermedio'], 13, 8);
        echo "C.F. Intermedio: $CFINTERMEDIO";
        echo '<br/>';
    }

//Base
    if (preg_match('/BASE       (?<cfbase>[\w]+.+)/i', $line, $r2)) {
        $CFBASE = substr($r2['cfbase'], 13, 8);
        echo "C.F. Base: $CFBASE";
        echo '<br/>';

    }

//kVArh
    if (preg_match('/F.P. (?<fp>[\d]+.+)/i', $line, $r3)) {
        $anioi = substr($r3['fp'], 0, 5);
        echo "kVArh: $anioi";
        echo '<br/>';
        echo "--------------------------------------</br>";


    }

//Base promedio
    if (preg_match('/201912               (?<fp>[\d]+.+)/i', $line, $r3)) {
        $anioi = substr($r3['fp'], 8, 5); //        echo "kVArh: $anioi";
        echo '<br/>';
        echo "--------------------------------------</br>";
    }


} } LeerEncabezado();

fclose($fh);

И это работает до его момента, я должен взять 3 значения из этого текстового блока, последнее число в столбце INTERM, BASE и% M $. В этом чеке это будет 1,5,99,98%. Я уже использовал strg_replace для, я думаю, я буду использовать его для%. Поэтому я могу сравнивать эти переменные с другими в одной и той же квитанции.

Как извлечь эти значения, учитывая, что 201912 год изменится, учитывая год и количество строк в MES? В значительной степени использовал пробел и прочитал предыдущую строку, в которой будут три значения?

       MES    TOTAL  PUNTA  INTERM    BASE         TOT PTA INT BAS       % M$
    201901        9               1       7        744     122 622     99.96
    201902        8               1       6        672     107 565     99.97
    201903        9               1       7        744     115 629     99.97
    201904        9               2       7        719     122 597     99.97
    201905       10       1       8                744  88 656         99.98
    201906       10       1       8                720  80 640         99.97
    201907       12       2      10                744  92 652         98.89
    201908       13       2      11                744  88 656         97.74
    201909       11       1       9                720  80 640         97.05
    201910t               1       7                624  76 548         97.56
    201910       10                       1        120      20 100     98.80
    201911        8               1       6        721     115 606     99.20
    201912        7               1       5        744     117 627     99.98
...