Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/04/2006, 21h33   #1
Futur Membre du Club
 
Inscription : avril 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 19
Points : 15
Points : 15
Par défaut Lecture/transformation de mon fichier texte

Bonjour, j'ai un fichier qui ressemble à ceci :

[start]
501#
Description [ blabla ]
Categorie : blabla
#
2299#
Description [ blabla ]
Classe : [[ blabla ]]
Categorie : test
Theme : ** blabla **
#
[eof]

Chaque numéro correspond à un objet, chaque ligne entre les # correspond à la description de l'objet + sa classification. Il y a plusieurs milliers de lignes avec plusieurs milliers d'objets.

Le titre de chaque objet est rangé dans une base mysql avec le numéro correspondant.

Je souhaite transformer ce fichier en xml pour l'exploiter/intégrer par la suite dans la base de donnée.

Sachant que ce fichier est mis à jour par une autre personne, je souhaite automatiser le traitement / transformation du fichier.

Auriez-vous des idées pour réduire à maximum les étapes de traitement ?

Plusieurs obstacles :

1/ le numéro de chaque objet varie entre 3 et 4 caractères.
2/ les attributs de chaque objet (classe, desc, theme) peuvent aller jusqu'à 7
3/ il peut y avoir plusieurs lignes selon les attributs (2 lignes pour desc par exemple)

Je ne suis pas très familier avec le php, donc tous les conseils et même lignes de codes sont les bienvenues !!

Merci d'avance, j'reste dispo pour d'éventuelles précisions.

Charlysquare
charlysquare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2006, 01h19   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Tu pourrais utiliser quelque chose comme ceci (premier jet) :

Citation:
<?php

$source_file
= file_get_contents('1.txt');
preg_match_all("/([0-9]+)#[\n\r]*description(.*)(?:classe :(.*))?categorie :(.*)(?:theme :(.*))?#/Usi", $source_file, $matches, PREG_SET_ORDER);

echo
'<pre>';
print_r($matches);
echo
'</pre>';

?>
Colorez votre code PHP sur les forums grâce à Developpez.com
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/04/2006, 13h09   #3
Futur Membre du Club
 
Inscription : avril 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 19
Points : 15
Points : 15
Merci, je vais tester ça
charlysquare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 11h41   #4
Futur Membre du Club
 
Inscription : avril 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 19
Points : 15
Points : 15
Citation:
preg_match_all("/([0-9]+)#[\n\r]*description(.*)(?:classe : (.*))?categorie : (.*)(?:theme : (.*))?#/Usi",
Re,

Serait-il possible de m'éclairer sur le placement des parenthèses et des points d'interrogation, si par exemple je veux ajouter une catégorie supplémentaire je vais un truc dans le genre (?:cat2 .*)) ?

Merci d'avance
charlysquare est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2006, 14h24   #5
Futur Membre du Club
 
Inscription : avril 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 19
Points : 15
Points : 15
C'est bon, j'ai epluché les tutoriaux sur les regex, j'ai compris le sens des parenthèses ;=)

Merci encore
charlysquare est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h54.


 
 
 
 
Partenaires

Hébergement Web