读取txt文件并解析文本

read txt file and parse text

本文关键字:文本 txt 文件 读取      更新时间:2023-09-26

我正在尝试解析一个文本文件,但我不确定最好的方法和实践。使用PHP,我想把整个文件加载到一个字符串中,还是应该逐行执行?我对JavaScript方法也很满意,只是不太熟悉!

我应该用strstr在干草堆里找针吗?或者还有哪些方法适合解析一致的简单文本文件。

请注意,我想从文本文件(temp_log.txt)中得到的唯一数据是:

 Date: 07/07/2013   Time: 00:57:00.208      21 C
 Date: 07/07/2013   Time: 00:57:02.029      25 C

temp_log.txt:

 =>MET RTD
 SEL-2411                                 Date: 07/07/2013   Time: 00:57:00.208
 DEVICE
 INTRTD01   21 C
 INTRTD02 Open
 INTRTD03 Open
 INTRTD04 NA
 INTRTD05 NA
 INTRTD06 NA
 INTRTD07 NA
 INTRTD08 NA
 INTRTD09 NA
 INTRTD10 NA
 =>
 =>MET RTD
 SEL-2411                                 Date: 07/07/2013   Time: 00:57:02.029
 DEVICE
 INTRTD01   25 C
 INTRTD02 Open
 INTRTD03 Open
 INTRTD04 NA
 INTRTD05 NA
 INTRTD06 NA
 INTRTD07 NA
 INTRTD08 NA
 INTRTD09 NA
 INTRTD10 NA
 =>

如何在PHP 中使用ReGex获取日期、时间和温度的示例

<?php
$text = 
"=>MET RTD
 SEL-2411                                 Date: 07/07/2013   Time: 00:57:00.208
 DEVICE
 INTRTD01   21 C
 INTRTD02 Open
 INTRTD03 Open
 INTRTD04 NA
 INTRTD05 NA
 INTRTD06 NA
 INTRTD07 NA
 INTRTD08 NA
 INTRTD09 NA
 INTRTD10 NA
 =>
 =>MET RTD
 SEL-2411                                 Date: 07/07/2013   Time: 00:57:02.029
 DEVICE
 INTRTD01   25 C
 INTRTD02 Open
 INTRTD03 Open
 INTRTD04 NA
 INTRTD05 NA
 INTRTD06 NA
 INTRTD07 NA
 INTRTD08 NA
 INTRTD09 NA
 INTRTD10 NA
 =>";
// split text to lines 
$lines = explode("'n", $text);
// find date, time and temperature
$all = array();
$date = "";
$time = "";
foreach( $lines as $line ) {
    $number = preg_match('#Date: ([^ ]+).*Time: ([^ ]+)#', $line, $result);
    if( $number > 0 ) { 
        $date = $result[1]; 
        $time = $result[2]; 
    }
    $number = preg_match('# ('d+) C#', $line, $result);
    if( $number > 0 ) { 
        $all[] = array($date, $time, $result[1]); 
    }
}
// print all results
foreach($all as $element) {
    echo "Date: ", $element[0], "   Time: ", $element[1], "      ", $element[2], " C", PHP_EOL;
}
?>