fgets() : afficher plusieurs lignes

Eléphanteau du PHP | 12 Messages

18 avr. 2007, 19:37

Hello,

Donc, voici la partie du code d'un fichier :
$fopen_config_inc = fopen("inc/config.inc.php", "r+"); // Ouverture du fichier en lecture seule.

echo $ligne1 = fgets($fopen_config_inc);

echo '<p></p><textarea name="affichage_var">'.$ligne1.'</textarea>'; // Affichage du contenu du fichier.

fclose($fopen_config_inc); // Fermeture du fichier.
Mon code fonctionne très bien. Là, il ne m'affiche que la première ligne du fichier (logique avec fgets), donc si je souhaite afficher plusieurs lignes, je dois faire une boucle, on est accord sur ce point. En faites, j'ai mon fichier inc/config.inc.php, je souhaite n'afficher que les lignes 8, 9, 10, 11 mais pas le début du fichier, comment faire ?

Merci à tous,
Shams Fantar - Site personnel

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

18 avr. 2007, 20:05

Ça doit ressembler à ça, sauf erreur
<?php

// rt = lecture, mode Windows activé si disponible
$fp = fopen('inc/config.inc.php', 'rt');

// numéro de ligne
$i = 0;

while (!feof($fp))
{
	$ligne = fgets($fp);

	// on incrémente le numéro de ligne à chaque itération
	// $i est la variable standard pour les compteurs d'itérations
	++$i;

	if ($i >= 8 && $i <= 11)
	{
		// ce serait dommage que la ligne contienne du HTML alors on utilise htmlspecialchars()
		// notez l'utilisation de virgules pour echo (multiples arguments), plus efficaces qu'une
		// concaténation
		echo '<p></p><textarea name="affichage_var">', htmlspecialchars($ligne), '</textarea>';
	}
	elseif ($i > 11)
	{
		// on sort de la boucle
		break;
	}
}
fclose($fp);