Php 读取特定块并提取值
我在做社会服务,目的是使过程自动化。我已经使用正则表达式捕获了其他值,例如:Php 读取特定块并提取值,php,parsing,text,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_________00
<?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);
您可以使用正则表达式,但也可以很简单地切掉标题,按
\n
拆分,然后循环,然后按选项卡拆分,然后在每次迭代中都有一个数组,其中包含您需要的列(可以检查缺少的值)。正则表达式不会使用此正则表达式:它可以在线工作,但是当我想在代码中使用它时,它只会显示为空白,问题是在[\r\n]之后,.+不起作用,没有任何功能只匹配整个文本块,我不确定我是否遵循。您的表的列中缺少一些项,如果我试图用“+”或“[\d],[0-9]搜索下一行,则使用此正则表达式/MES\s+TOTAL(?.+[\n\r]+)/i,正则表达式将不匹配,它只打印“Inicio de historico:PUNTA INTERM BASE to PTA INT BAS%M$”
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