1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <?php function getFileLines( $filename , $startLine = 1, $endLine = 50, $method = 'rb' ){ $content = array (); if (version_compare(PHP_VERSION, '5.1.0' , '>=' )){ // 5.1版本之上使用Splfileobject $count = $endLine - $startLine ; $fp = new SplFileObject( $filename , $method ); $fp -> seek( $startLine - 1); // 转到$startLine行,seek方法从0开始计数 for ( $i = 0; $i <= $count ; ++ $i ){ $content [] = trim(( $fp -> current()), "\n" ); //current()方法取当前行清除换行保存到数组 $fp -> next(); //循环下一行 } } else { // PHP<5.1 $fp = fopen ( $filename , $method ); if (! $fp ) return 'error:can not read file' ; for ( $i = 1; $i < $startLine ; ++ $i ){ //定位到$startLine行 fgets ( $fp ); } for ( $i ; $i <= $endLine ; ++ $i ){ $content [] = fgets ( $fp ); //从$startLine行开始循环读取到$endLine行 } fclose( $fp ); } return array_filter ( $content ); //返回array_filter(flase,null,0)过滤后的数组 } ?> |
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?php $filename = 'file.txt' ; $start = 1; $end = 10; $count = $end - $start ; while (true){ $data = getFileLines( $filename , $start , $end ); // var_dump($data); $rev = ver( $data ); if ( $data [9] == '' ){ die ( "End" ); sleep(10); } $start = $start + 10; $end = $end + 10; } ?> |