PHP Regex date + tel + caracteres - PHP - Programmation
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é ...
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.
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);
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