PHP Regex date + tel + caracteres

PHP Regex date + tel + caracteres - PHP - Programmation

Marsh Posté le 24-07-2008 à 10:57:32    

Bonjour à tous,
J'ai un fichier texte rempli de ligne du type :
110/12/200711:30:32XXXXXXXXXXVALD'OISE00:00:0600:00:00Unique0,000
210/12/200711:30:32XXXXXXXXXXVALD'OISE00:00:0600:00:00Unique0,000
310/12/200711:30:32XXXXXXXXXXVALD'OISE00:00:0600:00:00Unique0,000
où le premier chiffre est le numéro de la ligne ( chiffre allant de 1 à 100 ), suivi de la date JJ/MM/AAAA puis de l'heure HH:MM:SS puis d'un numero de tel XXXXXXXXXX puis du lieu [a-z] et de la durée de l'appel.
J'aimerais extraire toutes ces données dans un joli tableau en php.
Pour celà, j'ai commencé à mettre en place ma regex :
 
preg_match('/[0-9]{1,3}'.'([0-9]{2}\/)'.'([0-9]{2}\/)'.'([0-9]{4})'.'([0-9:]{8})'.'([0-9]{8})'.'([^0-9]*)'.'([0-9:]{8})'.'([0-9:]{8})'.'([a-zA-Z]*)'.([0-9,]*)/',$ligne,$res1);
Mais elle ne marche pas vraiment..
Le premier probleme est de séparer le numero de la ligne ( j'arrive pas à faire une condition pour qu'il prenne les 2 caracteres avant le premier / ) puis ensuite de pouvoir recuperer les données une par une...
Merci de votre aide

Reply

Marsh Posté le 24-07-2008 à 10:57:32   

Reply

Marsh Posté le 24-07-2008 à 11:11:13    

Question :  
imaginons qu'une ligne commence comme ça :
111/12/2008
111, c'est ligne #1 du 11/12/2008, ou ligne #11 du 1/12/2008 ?
 
L'idéal à mon sens, ce serait un sépérateur pour les données dans le fichier texte, et un split. Mais bon, si le fichier txt t'es imposé ...


Message édité par kao98 le 24-07-2008 à 11:12:41

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 24-07-2008 à 11:17:50    

Malheureusement, le fichier texte est imposé.
Oui c'est bien la ligne 1 du 11/12/2008
 
j'avance pas à pas avec :  
 
preg_match('/([0-9]{2}\/)([0-9\/]{7})(.*)/',$ligne,$res1);
echo "<br />Date ".$res1[1].$res1[2];
echo "<br />Reste ".$res1[3];
 
où j'arrive à recuperer la date avec $res1[1].$res1[2] et le reste avec $res1[3] mais chaque fois que j'augmente la regex, soit ca marche plus, soit ca dérègle tout.

Reply

Marsh Posté le 24-07-2008 à 11:19:41    

Résolu  ( merci siteduzero ^^ )
 
$ligne = "110/12/200711:30:320102030405VALD'OISE00:00:0600:00:00Unique0,000";
preg_match( '`^([0-9]{1,3})([0-9]{2}/[0-9]{2}/[0-9]{4})([0-9]{2}:[0-9]{2}:[0-9]{2})([0-9]{10})([^0-9]*)([0-9]{2}:[0-9]{2}:[0-9]{2})([0-9]{2}:[0-9]{2}:[0-9]{2})([a-zA-Z]*)([0-9,]*)`' , $ligne , $res1);
 
var_dump($res1);

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed