extraction de contenus d'un fichier texte

extraction de contenus d'un fichier texte - PHP - Programmation

Marsh Posté le 07-10-2010 à 11:59:34    

Bonjour,
 
je cherche un moyen d'extraire des bouts de textes d'un fichier en php.  
 
voici un aperçu de mon fichier :
 

07/10/2010 - blablablabla 1 : hihihihihi 1
06/10/2010 - blablablabla 2 : hihihihihi 2
05/10/2010 - blablablabla 3 : hihihihihi 3
05/10/2010 - blablablabla 4 : hihihihihi 4


 
par ex. mettre dans 3 variables les 3 parties de la première ligne.
dans ma première variable la date : $date1 = "07/10/2010"
dans une seconde variable $titre1 = "blablablabla 1"  
et la troisième $contenu = "hihihihihi 1"
 
je parviens a extraire la date par cette fonction :

Code :
  1. $date1 = substr($ligne1, 0, 10);


mais comment, en php, je peux par ex. mettre la chaine de caractère qui se trouve entre les 2 caractères "-" et ":" dans une variable ? et tous ce qui est après ":" jusqu'à la fin de la ligne dans une autre ?
Merci d'avance...

Reply

Marsh Posté le 07-10-2010 à 11:59:34   

Reply

Marsh Posté le 07-10-2010 à 12:27:07    

Il faut utiliser les expressions régulières

Code :
  1. preg_match('#^([0-9]{2}/[0-9]{2}/[0-9]{4}) - (.*) : (.*)$#',$ligne_du_fichier,$matches);
  2. print_r($matches);

Message cité 1 fois
Message édité par Paulp le 07-10-2010 à 12:27:41
Reply

Marsh Posté le 07-10-2010 à 13:13:54    

Paulp a écrit :

Il faut utiliser les expressions régulières

Code :
  1. preg_match('#^([0-9]{2}/[0-9]{2}/[0-9]{4}) - (.*) : (.*)$#',$ligne_du_fichier,$matches);
  2. print_r($matches);



ok, je vais essayer... merci !

Reply

Marsh Posté le 07-10-2010 à 13:16:06    

Autre solution, lire le fichier avec file() puis pour chaque ligne (une ligne = une entrée dans le tableau résultat de file(), utiliser explode() avec comme 1er séparateur, " - ". Ca va te donner un tableau à 2 entrées, la première contenant la date. Tu relances explode() sur la 2ème entrée avec comme séparateur " : ". A nouveau, t'auras un tableau à 2 entées qui vont correspondre à tes 2 autres variables.
 
A voir après si en termes de perfs c'est mieux que preg_match. Il me semblait avoir lu que les PCRE étaient assez coûteuse en perfs :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 07-10-2010 à 14:30:27    

Bon après faut aussi voir niveau clarté hein :o
Parce que les explode imbriqués dans tous les sens, niveau facilité de compréhension j'ai vu mieux :o
 
Premature optimisation is the root of all evil :o


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 07-10-2010 à 14:54:00    

esox_ch a écrit :

Bon après faut aussi voir niveau clarté hein :o
Parce que les explode imbriqués dans tous les sens, niveau facilité de compréhension j'ai vu mieux :o
 
Premature optimisation is the root of all evil :o


 
En même temps, les expressions régulières, c'est pas ce qui est le plus facile à lire, hein :/ Quand tu commences à mettre de la récursivité dans des ExpReg, par ex, ça devient folklorique à lire :sweat:

Message cité 1 fois
Message édité par rufo le 07-10-2010 à 14:54:15

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 07-10-2010 à 15:36:12    

Dans ce cas, la regexp peut être simplement ^(.*) - (.*) : (.*)$
Ca se lit tout seul si on sait ce qu'est une regexp :
^ : début de la ligne
(.*) : N'importe quoi (littéralement un nombre indéfini de n'importe quel caractère), entre parenthèses pour être réutilisé ensuite
$ : fin de la ligne

Reply

Marsh Posté le 07-10-2010 à 15:56:04    

rufo a écrit :


 
En même temps, les expressions régulières, c'est pas ce qui est le plus facile à lire, hein :/ Quand tu commences à mettre de la récursivité dans des ExpReg, par ex, ça devient folklorique à lire :sweat:


 
Non mais d'accord. On peut toujours faire des trucs ignobles si on s'applique  [:spamafote]  
Le truc c'est que pour parser une chaine de caractères comme ça, c'est fait en 2 sec et c'est propre et clair.
Et le jour où il veut rajouter un 4ème champ, pas besoin de remettre une couche d'explode et de moulinette .. [:kbchris]


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Sujets relatifs:

Leave a Replay

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