【问题标题】:read txt file and parse text读取txt文件并解析文本
【发布时间】:2013-07-08 23:55:45
【问题描述】:

我正在尝试解析文本文件,但我不确定这样做的最佳方法和实践。使用 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:使用 php 解析日志文件(例如正则表达式);将结果转换为JSON;将 JSON 传递给您的 JS 客户端。除其他外,这将具有能够使用 AJAX 访问数据的优势。此外,不需要将日志文件中无用的其余部分传输到客户端。

标签: php javascript parsing


【解决方案1】:

示例如何在 PHP 中使用正则表达式获取日期、时间和温度

<?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;
}

?>

【讨论】:

  • 感谢您的回复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-02
  • 2019-04-16
  • 2015-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多