PHP - 从文本文件末尾读取

问题描述:

我有一个用逗号分隔的值的文本文件。PHP - 从文本文件末尾读取

例子:

1299491735618,10,84,10,121.6,10,120.0,12994917389996,12, 13, 14, 15, and so on .. 

现在,我仅需要读取数据的最后一个“设置”,即只能从12994917389996,12, 13, 14, 15, and so on ...

在这种情况下,我想12994917389996大于130个其他值小于130.所以,我需要读取FROM 12994917389996到文件末尾...

希望你懂了!

编辑1:不,它是一个动态的文本文件,不断更新,我只需要每次只读取最后一组数据!

编辑2:MY代码

<?php 
$file = fopen('graph.txt', 'r') or die("can't open file"); 

if ($file) { 
    while (!feof($file)) { 
     $line = trim(fgets($file)); 
     if (strlen($line)) { 
      $fields = explode(",", $line); 
      $num = count($fields); 
      for ($i = 0; $i < $num; $i++) { 
       $keyval[$i] = $fields[$i]; 
       if ($i == 0) { 
        $keyval['x'][] = $fields[$i]; 
        echo $keyval['x'][0]; 
       } 
       else { 
        if ($i % 2 == 0) $keyval['y'][] = $fields[$i]; 
        else $keyval['y1'][] = $fields[$i]; 
       } 
      } 
     } 
    } 
} 

fclose($file); 
?> 

在这里,我使用$ KEYVAL [X] []存储[]存储交替巨XXXXXXXXXXXXX值和KEYVAL [Y]和KEYVAL [Y1] []值后大巨人(xxxxxxxxxxxxx)价值....这应该澄清一切!

对不起,我不知道我得到它...你想从第一个数字中除第一个数字以外的所有数字都大于130?男人,这很复杂:D

这个怎么样?

$str = "1299491735618,10,84,10,121.6,10,120.0,12994917389996,12,13,14,15,16,17"; 

$arr = explode(',', $str); 

$i = 1; 
while ($i < count($arr) && floatval($arr[$i]) < 130) 
    $i++; 

print_r(array_slice($arr, $i)); 

输出:

Array 
(
    [0] => 12994917389996 
    [1] => 12 
    [2] => 13 
    [3] => 14 
    [4] => 15 
    [5] => 16 
    [6] => 17 
) 
+0

重点是我需要从文件的结尾读取...不是从第一个! – Zac 2011-04-18 03:30:05

希望这会有所帮助。

$ echo '1299491735618,10,84,10,121.6,10,120.0,12994917389996,12, 13, 14, 15' > file 
$ php -a 
php > $fp = fopen('/path/to/file', 'r'); 
php > fseek($fp, 38); 
php > echo fgets($fp); 
12994917389996,12, 13, 14, 15 

如果不是,您可以更具体地了解存储在文件中的数据结构吗?

+0

嗨文件就像我提到的... 1299491735618,10,84,10,121.6,10,120.0(依此类推......),12994917389996,12,13,14,15等等。我只需要阅读最后一组数据! – Zac 2011-04-18 03:27:41

+0

您的数据结构是否定义良好?我的意思是,你可以说你需要最后30个字节的文件或这个数字可能会有所不同吗?它会始终是XXXXXXXXXX,XX,XX.X,XX,XX还是您的数据结构可能与此模式不同?通过不读取整个文件,可以节省一些处理器时间和内存。在这种情况下,你只需打开它,寻找最后30个字节,阅读并关闭你的文件(我上面提供的方法)。你可以从最后得到文件大小减去30个字节并寻找这个数字(第二个fseek函数参数) – Nemoden 2011-04-18 03:35:28

+0

你说得对,但是这个文件是动态的,值不断追加到它......我需要的只是读取最后一组数据。 ..唯一的结构我可以辨别的是,.. xxxxxxxxxxx值肯定大于130,其他值小于130 .. si我需要从文件的END读取,TILL的值大于130。 ..所以,输出就像你提到的..它需要动态 – Zac 2011-04-18 03:45:51