/*
*@param string $file Chemin du fichier texte
*@param int $startLine Première ligne du texte que l'ont veut retourner. Le fichier commence à la ligne 0
*@param int $enLine Dernière ligne du texte que l'ont veut retourner
*@return string Une chaîne de caractère comprenant les lignes de $startLine à $endLine du fichier texte
*/
GetFilePart($file, $startLine, $endLine)
{
if($endLine< 0) {
return false;
}
$return = '';
$files = file($file);
if($startLine < 0) {
$startLine = 0;
}
$iCpt = count($file);
if($iCpt < $endLine) {
$endLine = $iCpt;
}
for($i = $startLine; $i <= $endLine; $i++)
{
//if($i < count($files) && $i >= 0)
$return .= $files[$i];
}
return $return;
}
//Exemple :
//retourne les 10 premières lignes du fichier
$text = GetFilePart('file.txt', 0, 10);
Remarque :
Correction et optimisation par Malalam : inutile d'appeler le count() DANS la boucle, il sera alors exécuté autant de fois qu'on boucle alors que le nombre de lignes contenues dans le fichier ne bouge pas.
Si $endLine est négatif, on renvoie false, ça ne tient pas debout d'avoir un entier négatif ici (où on balance une exception). Si $startLine est négatif, on le fixe à 0 histoire d'essayer quand même.
Sinon, on peut utiliser array_splice(), plus simplement, mais moins performant qu'une boucle.