Gå til innhold

Lese linjer fra fil


Anbefalte innlegg

Videoannonse
Annonse

Dette er utestet kode, men tror det skal fungere...:

<?php

/**
* Tar med de $length  neste linjene fra og med $start fra filen $file
*/
function readLines ( $file, $start, $length = false ) {
$fh = fopen($file, 'r');

$lines = array();
$lineNum = 0;
while ( !feof( $fh ) ) {
	if ( ++$lineNum >= $start && ( $length === false || count( $lines ) < $length ) {
		$line = "";
		do {
			$char = freadc( $fh );
			if ( $char == "\r" && fpeek ( $fh ) == "\n" ) {
				// Windows har linjeendinger som er to tegn, vi stripper derfor vekk neste char
				freadc ( $fh );
				break;
			} else if ( in_array ( $char, array ( "\r", "\n" ) ) {
				break;
			} else {
				$line .= $char;
			}
		}
		$lines[] = $line;
	}
}

return $lines;
}

function fpeek ( &$fh ) {
$curpos = ftell ( $fh );
if ( feof ( $fh ) ) {
	return false;
}
$char = fgetc ( $fh );
fseek ( $fh, $curpos );
return $char;
}
?>

Endret av Jonhoo
Lenke til kommentar
  • 2 uker senere...
Dette er utestet kode, men tror det skal fungere...:

Lær en mann å fiske...

 

Men her er også utestet (og et par linjer færre) kode.

<?php
function ReadLines($filename, $start, $length=false)
{
 $file_array = file($filename);
 if($length!=false)
 {
$end=sizeof($file_array);
 }
 else
 {
$end=$start+$length;
 }
 $extract = array_slice($file_array, $start, $end);
 return($extract);
}
?>

 

Alternativt med fopen

<?php
function ReadLines($filename, $start, $length=false)
{
 $file_handle = fopen($filename, 'r')
 if(!file_handle)
 {
return(false)
 }
 for($cnt=0; $cnt<$start)
 {
fgets($file_handle);
 }
 if($length==false)
 {
while(!feof($file_handle))
{
  $lines[]=fgets($file_handle);
}
 }
 else
 {
$for($cnt=0; $cnt<$length; $cnt++)
{
  if(!feof($file_handle))
  {
	$lines[]=fgets($file_handle)
  }
}
 }
 return($lines);
}
?>

 

Det kan være at fgetc() er mer binær eller tråd-sikker enn fgets og at det er derfor du valgte den.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...