[php]comment lire une ligne avec fgets

Fermé
david - 26 avril 2006 à 20:29
 missy - 21 août 2006 à 21:56
Bonjour,

j'aimerais savoir si c'est possible de lire un numéro de ligne spécifique avec la fonction fgets, ou si je doit passer par d'autre fonctions.

J'ai récupéré ce code

< ?php
$fichier = fopen("essai.txt","r");
$premier = fgets($fichier, 10);
echo "Dix Premier Caractères : " . $premier;
fclose($fichier);
?>

mais je pense qu'il va lire les dix premières lignes à partir du début du fichier, mais comment faire pour lire à partir de la troisième ligne par exemple.
merci

David.
A voir également:

3 réponses

merci,
mais au fait le fichier sur lequel je travaille est très volumineux c'est un fichier texte brute de taille 3.48 mo !!!!
au fait c'est un fichier tirer du serveur ( le serveur MSC pour le réseau gsm)
au fait l'application que je suis entrain de développé va servir à la société dans laquelle je suis entrain de faire un stage à controller le trafic sur le réseau gsm d'un opérateur dans mon pays.....
je suis etrain de faire une application avec easyphp qui doit pouvoir extraire les valeur des copmteurs à partir du fichier pour remplir la base de données, j'ai déjà créer la base de données et la table qui contient les champs qui sont tous les compteurs présent dans le fichier
il me reste le remplissage de la base de données mysql avec les valeurs des copmteur qui se trouvent dans le fichier texte
le probléme c'est que quand j'utilise fgets pour lire le fichier ligne par ligne , toute la ligne est considéré comme une seule chaine de caractére
mais moi dans la meme ligne j'ai le nom du compteur ainsi que les différentes valeurs de ce compteur
/*****extrait de quelques ligne du fichier texte sur lequel je travaille******/

9760COMMAND SUBMITTED
MSC6/CT1M06MPS/MTOMPK1V5308-069/006 06-02-15 10:33:559760 SC CPADM007 2893/00880 GETTRAFILE:FILE=MF.USMM.CY4,BEG=06-02-14,TER=06-02-14;

TRAFFIC MEASUREMENT : PRELIMINARY DATA

JOBNO MEASUREMENT VARIANT VERSION SCAN JOB EXCH FILENAME
TYPE SVA SFV TIME TYPE ID
-----+-------------+-------+-------+----+-------+-----+-----------------
USMM G0 53 15 CYCLIC MSC6 MF.USMM.CY4

BEGIN END INTERVAL PERIODS
-------------------------------------
INTERRUPTION TEXT JOB 9760
MSC6/CT1M06MPS/MTOMPK1V5308-069/006 06-02-15 10:33:599760 SC CPADM007 2893/07690 GETTRAFILE:FILE=MF.USMM.CY4,BEG=06-02-14,TER=06-02-14;

TRAFFIC MEASUREMENT 06-02-14 00:00-00:15
------------------- DATA QUALITY : SECURE
MOBILE SERVICES SWITCHING CENTER (MSC) - GENERAL PART
MISCELLANEOUS PART

DESCRIPTION COUNTER
------------------------------+-------
NUM_RESET 0
NUM_RESET_CIRCUIT 0
NUM_SSP_BSSAP 0
NUM_SIGN_POINT_PROHIB 0
NUM_CALLS_REL_BS 0
NUM_RECEIVED_OVERLOAD 0
NUM_SEND_OVERLOAD 0
NUM_RECEIVED_GCP 0
NUM_RECEIVED_CIP 0
NUM_RECEIVED_CLASSM_UPD 59277
NUM_TOTAL_START_IMEI_CHECK 26454
NUM_IMEI_CHECK_WHITE 26454
NUM_IMEI_CHECK_GREY 0
NUM_IMEI_CHECK_BLACK 0
NUM_IMEI_CHECK_UNKNOWN 0
NUM_IMEI_CHECK_LUP 4153
NUM_IMEI_CHECK_PER_LUP 1
NUM_TONES_DTMF 348
NUM_NO_SPCH_BSSAP_LTG 0
NUM_ATT_SCP_DIALOGS_LNP 0
NUM_SUCC_SCP_DIALOGS_LNP 0
LNP_QUERIES_LRN 0
LNP_MISROUTED_CALL 0
LNP_UNALLOC_NUM_MICTR 0
LNP_VACANT_CODE 0
NUM_ATT_SCP_DIALOGS_SMS 1670
NUM_ATT_SCP_DIALOGS_USSD 0
NUM_SWITCH_LTGPOOL 0END TEXT 9760
MSC6/CT1M06MPS/MTOMPK1V5308-069/006 06-02-15 10:34:029760 SC CPADM007 2893/06833 TRAFFIC MEASUREMENT
-------------------
MOBILE SERVICES SWITCHING CENTER (MSC) - GENERAL PART
TIME / DURATION RELATED PART (1) OF (2)

DESCRIPTION COUNTER
------------------------------+-------
TIME_CALL_SET_U_SERV 34760
NUM_CALL_SET_UP_CONTRIB 22410
TIME_LUP_SERV 23732
NUM_LUP_CONTRIB 14564
TRAFF_VOL_SUCC_PAGING 234624END TEXT 9760
MSC6/CT1M06MPS/MTOMPK1V5308-069/006 06-02-15 10:34:049760 SC CPADM007 2893/06832 TRAFFIC MEASUREMENT
-------------------
MOBILE SERVICES SWITCHING CENTER (MSC) - GENERAL PART
TIME / DURATION RELATED PART (2) OF (2)

DESCRIPTION MOBILE MOBILE MOBILE MOBILE MOBILE MOBILE
ORIGIN OUTG OUTG TERMIN INCOM TRANS
TRAFF PLMN NOT TRAFF TRAFF TRAFF
PLMN
------------------+--------+--------+--------+--------+--------+--------
TRAFFIC_VOLUME 498201 78865 228943 467805 357773 2326
D_CONV_SPEECH_SERV 56528 170230 325134
D_CONVERSATION 40
D_CONV_DATACDA_ANA 0 0 0
D_CONV_DATACDA_DIG 0 0 0
D_CONV_ALTFAXSP 0 0 0
D_CONV_FAX3 0 0 0
D_CONV_DED_PAD 0
D_CONV_DATACDS_ANA 0 0 0
D_CONV_DATACDS_DIG 0 0 0
D_ALT_SPEECH_DATA 0 0 0 END TEXT 9760
MSC6/CT1M06MPS/MTOMPK1V5308-069/006 06-02-15 10:34:069760 SC CPADM007 2893/40245 GETTRAFILE:FILE=MF.USMM.CY4,BEG=06-02-14,TER=06-02-14;

TRAFFIC MEASUREMENT
-------------------
UMTS MOBILE SERVICES SWITCHING CENTER (UMSC) - GENERAL PART
TIME / DURATION RELATED PART

DESCRIPTION MOBILE MOBILE MOBILE MOBILE
ORIGIN OUTG OUTG TERMIN
TRAFF PLMN NOT TRAFF
PLMN
--------------------+--------+--------+--------+--------
U_TRAFFIC_VOLUME 0 0 0 0
U_D_CONV_SPEECH_SERV 0 0 0END TEXT 9760
MSC6/CT1M06MPS/MTOMPK1V5308-069/006 06-02-15 10:34:089760 SC CPADM007 2893/06830 TRAFFIC MEASUREMENT
-------------------
MOBILE SERVICES SWITCHING CENTER (MSC) - GENERAL PART
LOAD AND DEMAND RELATED PART (1) OF (2)

/***fin de l'extrai***/

c'est juste pour etre plus claire

et merci d'avance
cordialement missy,
1
je suis entrain de travailler un projet en php
mais je ne sais pas comment faire pour lire une ligne à partir d'un fichier texte tout en gardant son format comme il est c'est à dire je veut garder les espaces et les tabulations qui se trouvent dans la chaine de caractére
j'ai essayer avec fscanf et avec fgets mais ca lit une chaine te neléve tout les espaces et les tabulations
0
Utilisateur anonyme
21 août 2006 à 15:08
Il me semble que le 2e paramètre de fgets est le nombre max de caractères à lire, ce qui n'est pas ce que tu veux.

Une solution simple pour lire une certaine ligne est de remplir le fichier dans un tableau (avec file()) et de lire la ligne désirée.

Cette solution à le désavantage d'être très couteuse sur les gros fichiers. Dans ce cas il faut lire le fichier depuis le début jusqu'a la ligne désirée (en comptant les retours à la ligne rencontrées).
-1