阅读特定的txt txt php文件并提取值

时间:2020-03-03 23:53:32

标签: php parsing text

我正在进行社会服务,其想法是使流程自动化。我已经使用正则表达式捕获了其他值,例如:

<?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,我想用它作%。因此,我可以将这些变量与同一张收据中的其他变量进行比较。

考虑到年份和MES中的行数可能会更改,我如何考虑到201912会发生变化而提取这些值?几乎用完了空格并读取了前一行,这将是3个值所在的那一行?

       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

0 个答案:

没有答案