PHP façon d'obtenir nombre de lignes dans le fichier et de déplacer le pointeur de fichier à la ligne spécifiée?
Est-il un moyen de:
- compter le nombre de lignes (1 ligne = ligne de données) dans mon small_db.php
- dire à PHP pour déplacer le pointeur de fichier exactement au début de la ligne 322. (afin que je puisse fgets() les données de cette ligne)
- dire à PHP de retour, le numéro de ligne ou la totalité du contenu de la ligne dans le texte "Quick brown fox" se passe?
Je sais qu'il existe une autre façon par l'obtention de tout le contenu du fichier dans une chaîne unique, mais comme vous le savez cette méthode est le temps et la mémoire inefficace si la taille de fichier est gros.
J'ai écrit un billet de blog, parfois en arrière qui explique comment tronquer les N dernières lignes à partir d'un fichier à l'aide de PHP et je pense même logique, vous sera utile pour vous dans la réalisation de ce que vous êtes à la recherche de: blogs.digitss.com/php/truncate-last-n-lines-of-a-file-using-php
OriginalL'auteur Miloš Đakonović | 2012-06-23
Vous devez vous connecter pour publier un commentaire.
Pour commencer, voici quelques variables de base:
À le faire rapidement et facilement, utilisez
count()
après avoir ouvert le fichier avecfile()
:Cependant, ce va utiliser beaucoup de mémoire si votre fichier est volumineux, comme il l'a charger tout le fichier en mémoire pour le comte de la valeur de retour de
file()
. Alternativement, vous pouvez utiliser le fichier standard de fonctions,fopen()
,feof()
,fgets()
, etfclose()
, pour ouvrir le fichier et le lire ligne par ligne, en gardant un nombre que vous allez, comme suit:C'est le mieux réalisé à l'aide de la
SplFileObject
classe. Vous créez un nouvel objet de cette classe avec le nom de fichier du fichier que vous êtes à l'ouverture, puis utiliserseek()
de chercher pour le numéro de ligne de votre choix. Vous pouvez ensuite utiliser()
pour afficher le numéro de ligne etcurrent()
(ougetCurrentLine()
oufgets()
) pour obtenir le contenu de cette ligne, comme ceci:Il n'est pas intégré les fonctions de PHP /méthodes qui peuvent le faire autant que je sache. Vous aurez besoin d'analyser vous-même avec quelque chose de similaire à cette fonction, qui vérifie chaque ligne d'un fichier, donnée par son pointeur de fichier
$fp
, à l'égard d'une casse$needle
à l'aide destrpos()
(vous pouvez utiliserstripos()
pour la casse de la recherche):Vous devez appeler cette fonction comme suit:
OriginalL'auteur nickb