bronx84
Messages postés6Date d'inscriptionmardi 18 octobre 2005StatutMembreDernière intervention27 mars 2007
-
26 mars 2007 à 23:22
bronx84
Messages postés6Date d'inscriptionmardi 18 octobre 2005StatutMembreDernière intervention27 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
cs_Dawelle
Messages postés15Date d'inscriptionsamedi 7 janvier 2006StatutMembreDernière intervention17 avril 20081 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.
bronx84
Messages postés6Date d'inscriptionmardi 18 octobre 2005StatutMembreDernière intervention27 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....