Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1726 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  extraction de contenus d'un fichier texte

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

extraction de contenus d'un fichier texte

n°2027515
recep
Posté le 07-10-2010 à 11:59:34  profilanswer
 

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...

mood
Publicité
Posté le 07-10-2010 à 11:59:34  profilanswer
 

n°2027526
Paulp
~, sweet ~
Posté le 07-10-2010 à 12:27:07  profilanswer
 

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
n°2027537
recep
Posté le 07-10-2010 à 13:13:54  profilanswer
 

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 !

n°2027539
rufo
Pas me confondre avec Lycos!
Posté le 07-10-2010 à 13:16:06  profilanswer
 

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 Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2027567
esox_ch
Posté le 07-10-2010 à 14:30:27  profilanswer
 

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
n°2027586
rufo
Pas me confondre avec Lycos!
Posté le 07-10-2010 à 14:54:00  profilanswer
 

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 Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2027629
Paulp
~, sweet ~
Posté le 07-10-2010 à 15:36:12  profilanswer
 

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

n°2027643
esox_ch
Posté le 07-10-2010 à 15:56:04  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  extraction de contenus d'un fichier texte

 

Sujets relatifs
transfert de fichier grâce a OBEX?Recuperer un resultat dans un fichier txt ..
Attribuer un nombre à du texte sur liste déroulantestocker 1 fichier sur un site accessible par une url
import, traitement, conversion, opération sur fichier texte .txtAlgorithme d'extraction de courbe
Upload de fichier StrutsSuppression fichier
Plus de sujets relatifs à : extraction de contenus d'un fichier texte


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR