Parser un fichier texte en php
Résolu/Fermé
sly-bzh
Messages postés
415
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
5 décembre 2009
-
25 janv. 2008 à 10:15
sly-bzh Messages postés 415 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 - 25 janv. 2008 à 12:01
sly-bzh Messages postés 415 Date d'inscription jeudi 10 janvier 2008 Statut Membre Dernière intervention 5 décembre 2009 - 25 janv. 2008 à 12:01
A voir également:
- Parser un fichier texte en php
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir un fichier .bin - Guide
- Transcription audio en texte word gratuit - Guide
4 réponses
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
25 janv. 2008 à 11:27
25 janv. 2008 à 11:27
Bonjour,
La meilleure solution à ton problème passe par les expressions rationnelles.
Je peux te donner le code qui ira bien, mais il faut que je sois sûr de la façon dont sont formatées tes séquences.
Est-ce que tu valides ce modèle ?
[Début de la séquence 1]
>(code1);Code2|Code3 [Retour à la ligne]
[Retour à la ligne]
[Séquence à récupérer, composée uniquement de lettres en majuscule, de retours à la ligne et de tirets][Retour à la ligne]
*
[Fin de la séquence 1]
[Début de la séquence 2]
>(code1);Code2|Code3 [Retour à la ligne]
etc.
Les (code1), (code2), (code3) sont composés uniquement de lettres et de chiffres ainsi que du symbole "_".
Et tu voudrais avoir tout ça dans un tableau, par exemple ?
Si on valide ce modèle, voilà le code que je te propose :
Voilà !
J'espère que ça te suffira :)
Xavier
La meilleure solution à ton problème passe par les expressions rationnelles.
Je peux te donner le code qui ira bien, mais il faut que je sois sûr de la façon dont sont formatées tes séquences.
Est-ce que tu valides ce modèle ?
[Début de la séquence 1]
>(code1);Code2|Code3 [Retour à la ligne]
[Retour à la ligne]
[Séquence à récupérer, composée uniquement de lettres en majuscule, de retours à la ligne et de tirets][Retour à la ligne]
*
[Fin de la séquence 1]
[Début de la séquence 2]
>(code1);Code2|Code3 [Retour à la ligne]
etc.
Les (code1), (code2), (code3) sont composés uniquement de lettres et de chiffres ainsi que du symbole "_".
Et tu voudrais avoir tout ça dans un tableau, par exemple ?
Si on valide ce modèle, voilà le code que je te propose :
<?php $contenuFichier = file_get_contents("nom_fichier.txt"); $expressionRationnelle = "/>[a-zA-Z0-9_]+;[a-zA-Z0-9_]+\|[a-zA-Z0-9_]+\s*([^\*]+)\s*\*/"; $resultat = Array(); preg_match_all($expressionRationnelle, $contenuFichier, $resultat, PREG_PATTERN_ORDER); // $resultat devrait contenir toutes les séquences recherchées. On les affiche pour vérification : foreach ($resultat[0] as $numero => $sequence) { echo "<b>Séquence $numero</b><blockquote>$sequence</blockquote>"; } ?>(Pour information : https://www.php.net/manual/fr/function.preg-match-all.php)
Voilà !
J'espère que ça te suffira :)
Xavier
sly-bzh
Messages postés
415
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
5 décembre 2009
118
25 janv. 2008 à 11:47
25 janv. 2008 à 11:47
Merci beaucoup de t'intéresser à moi Xavier :D
Concernant le modèle on est tout à fait d'accord sur la structure. Concernant les expressions rationnelles je m'en doutais un peu mais j'avoue que aujourd'hui je n'ai absolument pas le temps de me mettre dedans (moi être petit stagiaire pressé de toute part par le temps...)
J'ai testé ton code mais il m'affiche :
Séquence 0
>P1;AQP1_BOVIN|Bos_taurus -------------------------------------------------- -------------------------------------------------- -------------------------------------MASEFKKKLFWRA VVAEFLAMILFIFISIGSALGFHYPIKSNQTT------------GAVQDN --VKVSLAFGLSIATLAQSVGHISGAHLNPAVTLGLLLSCQISVLRAIMY IIAQCVGAIVA------------------TAILSGITSSLPDN-SL-GLN ALAPGVNSGQGLGIEI-IGTLQLVLCVLATTDRRRR-D---LGGSGPLAI GFSVALGHLLAI----DYTGCGINPARSFGSSVITH-NFQDHWIFWVGPF IGAALAVLIYDFILAPRSSDLT---DRVKVWTSGQVEEYDLDADDINSRV EMKPK--------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------ *
Séquence 1
>P1;AQP1_SHEEP|Ovis_aries -------------------------------------------------- -------------------------------------------------- -------------------------------------MASEFKKKLFWRA VVAEFLAMILFIFISIGSALGFHYPIKSNQTT------------GAVQDN --VKVSLAFGLSIATLAQS
etc
je m'était peut être mal exprimé mais ce que j'aurais voulu c'est supprimer de ">P1" à "taurus" par exemple dans la séquence 1.
Je viens également de m'apercevoir que toutes les séquences commencent par ">P1;" si ça peut t'aider.
Encore merci
Sylvain
Concernant le modèle on est tout à fait d'accord sur la structure. Concernant les expressions rationnelles je m'en doutais un peu mais j'avoue que aujourd'hui je n'ai absolument pas le temps de me mettre dedans (moi être petit stagiaire pressé de toute part par le temps...)
J'ai testé ton code mais il m'affiche :
Séquence 0
>P1;AQP1_BOVIN|Bos_taurus -------------------------------------------------- -------------------------------------------------- -------------------------------------MASEFKKKLFWRA VVAEFLAMILFIFISIGSALGFHYPIKSNQTT------------GAVQDN --VKVSLAFGLSIATLAQSVGHISGAHLNPAVTLGLLLSCQISVLRAIMY IIAQCVGAIVA------------------TAILSGITSSLPDN-SL-GLN ALAPGVNSGQGLGIEI-IGTLQLVLCVLATTDRRRR-D---LGGSGPLAI GFSVALGHLLAI----DYTGCGINPARSFGSSVITH-NFQDHWIFWVGPF IGAALAVLIYDFILAPRSSDLT---DRVKVWTSGQVEEYDLDADDINSRV EMKPK--------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------ *
Séquence 1
>P1;AQP1_SHEEP|Ovis_aries -------------------------------------------------- -------------------------------------------------- -------------------------------------MASEFKKKLFWRA VVAEFLAMILFIFISIGSALGFHYPIKSNQTT------------GAVQDN --VKVSLAFGLSIATLAQS
etc
je m'était peut être mal exprimé mais ce que j'aurais voulu c'est supprimer de ">P1" à "taurus" par exemple dans la séquence 1.
Je viens également de m'apercevoir que toutes les séquences commencent par ">P1;" si ça peut t'aider.
Encore merci
Sylvain
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
25 janv. 2008 à 11:55
25 janv. 2008 à 11:55
Oups, petite coquille de ma part.
Le résultat voulu n'est pas dans $resultat[0] mais dans $resultat[1].
Donc à l'affichage, remplace foreach($resultat[0]...) par foreach($resultat[1]...)
Et tu as ce que tu voulais ;)
Xavier
Le résultat voulu n'est pas dans $resultat[0] mais dans $resultat[1].
Donc à l'affichage, remplace foreach($resultat[0]...) par foreach($resultat[1]...)
Et tu as ce que tu voulais ;)
Xavier
sly-bzh
Messages postés
415
Date d'inscription
jeudi 10 janvier 2008
Statut
Membre
Dernière intervention
5 décembre 2009
118
25 janv. 2008 à 12:01
25 janv. 2008 à 12:01
Merci beaucoup tu me sauve la vie (enfin pas au sens strict du terme mais bon quand même ça m'aide énormément !!!)
Et promis dès que j'ai le temps je me met aux regex
Et promis dès que j'ai le temps je me met aux regex