Récupération date + log

bronx84 Messages postés 6 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 27 mars 2007 - 26 mars 2007 à 23:22
bronx84 Messages postés 6 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 27 mars 2007 - 27 mars 2007 à 09:48
Bonjour à tous, j ai un fichier txt que j'ouvre à l'aide d'un formulaire et ce fichier je dois le traiter ensuite. Je dois extraire un bloc du fichier, quelque chose comme ca:
ACS2/V16/WSAXBK1V16325047/103                         06-08-07  01:45:38
 
LOG;                                                                  EXEC'D
 
UNIT         OST        UNIT         OST        UNIT         OST
------------+-----      ------------+-----      ------------+-----
BAP-0         MAS       BAP-1         SPR       CAP-0         ACT
CAP-1         ACT       CAP-2         ACT       CAP-3         ACT
                                              
 
END JOB 3188

pour l instant j arrive a extraire le bloc depuis le Log jusqu'au END avec ceci :
$commande = strpos($affichage, "LOG", $i);
$end = strpos($affichage, "END JOB", $commande);
 $commande += strlen("STATSSP"); //On se place juste après le STATSSP
 
 $end -= 1; //On se place juste avant le END JOB
 
 $length = $end - $commande;//Calcul de la longueur du bloc
 
 //extraction du texte entre la position $commande et $end                   
 $chaine_STATSSP = substr($affichage,$commande,$length);
Ce bloc se trouve plusieurs fois dans le fichier mais pas avec la meme date, donc il me faudrait la date dès que le log a été trouvé, et les données entre le log et le end.
Merci d'avance de votre aide

2 réponses

cs_Dawelle Messages postés 15 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 17 avril 2008 1
26 mars 2007 à 23:56
Salut,

Ta première ligne qui extrait le bloc commence par définir la position (strpos) du terme "LOG".
Dans ton fichier, la date se trouve être le dernier bloc de texte avant "LOG": 2 lignes plus hauts, sans texte entre deux.

Si tu veux continuer dans cette optique de localisation, tu peux te dire: bon, une ligne c'est ~2 caractères, la longueur de la date est de 18 caractères, donc je fais : (position du LOG) - 18 - 4, et je suis au début de la date... ensuite je prends les 18 caractères suivants et c'est bon. Ca devrait marcher.

Néanmoins c'est une technique assez bricolée car si ton fichier a subitement 2 lignes vides en plus entre "ACS2..." et "LOG;" ton script ne récupère qu'une partie de la date et ça devient gênant. Mais comme c'est du texte qui semble avoir été généré automatiquement, tu peux je pense te le permettre.

L'extrait de code fait par ailleurs référence à "STATSSP", que je ne vois pas dans ton bloc de texte, ça me semble superflu.

Si je devais faire ce travail, j'utiliserais explode() pour séparer le texte, soit par le délimiteur "END JOB", soit par les lignes (chr(13).chr(10)). Ou même j'ouvrirai le fichier avec la fonction file() pour récupérer direcement son contenu dans un tableau.

Mais cette utilité doit dépendre de la taille du fichier.
0
bronx84 Messages postés 6 Date d'inscription mardi 18 octobre 2005 Statut Membre Dernière intervention 27 mars 2007
27 mars 2007 à 09:48
Salut,
la taille du fichier peut varier entre 700ko a 900ko... et en fait le statssp fait référence au log que je dois chercher dans le fichier.... mon but serait d afficher un tableau a double entrée, les dates en haut(celle qui se rapportent au stat...) puis le nom des equipements et ensuite par colonne leurs états respectif de la semaine....
0
Rejoignez-nous