|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Bonjour a tous,
je suis debutant en PHP et je voudrais faire un exercice un peu compliqué. J'ai 2 fichiers appelons les data et keys Dans le fichier data j'ai une serie de registres (ce sont des doc biliographiques). Dans le segond fichier j'ai a peu pret la meme chose + des ID. Chaque ID est unique et correspond a une chaine bien specifique. Pour diferencier les registres du fichier data, l'on peu utiliser le premier champ =LDR un ligne blanche separe les registre, voici un exemple du fichier: Code :
l'exercice consiste a parser le champ 650 du fichier data: Ça peu aussi etre comme ceci: Code :
Code :
=650 \4$aMusika$x-Historia eta kritika Code :
=650 \4$a Haurren heziketa$j-Ipuinak$j-Haur eta gaztentzako liburuak a, ou x ou j ou y, z Pour toutes les combinaisons du fichier data il existe une correspondance dans le fichier keys. L'ecercice consiste a recuperer l'ID du fichier keys et de le coller a la fin de la ligne 650 du fichier data. voici comment se presente les données dans keys: Code :
Dans notre exemple ça serait: Code :
=650 \4$a Haurren heziketa$j-Ipuinak$j-Haur eta gaztentzako liburuak$90004537 J'ai commencer avec ce petit bout de code, mais je sais pas comment mettre dans une variable une chaine et ensuite la comparer dans l'autre fichier: Code :
Cordialement |
||||||||
|
|
00
|
|
|
#2 | ||
|
Membre éclairé
![]() Olivier Étudiant Inscription : novembre 2010 Messages : 303 ![]() |
Bonjour,
Citation:
![]() C'est en se lançant des défie qu'on progresse ![]() Alors si j'ai bien compris tu souhaite récupérer cette ligne : Code :
' 4''a' Haurren heziketa'j'-Ipuinak'j'-Haur eta gaztentzako liburuak'ZZ0004537' Est-ce que tous les numéros que tu souhaites récupéré possède des ' en début et fin de chaîne ? Si c'est le cas ce serra très simple avec explode(). Citation:
|
||
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Salut
oui tous les numero du fichier keys ont des '' pour delimieter. Le probleme c'est que si un champs 650 possede la lettre a x et j c'est different de la meme chose avec a et x ou a et z Meme si a possede la meme valeur. Et en plus, comment passer l'ID au fichier data et le coller a la bonne place? |
|
|
00
|
|
|
#4 |
|
Futur Membre du Club
![]() Étudiant Inscription : mai 2011 Messages : 22 ![]() |
Je n'ai pas très bien compris ce que tu souhaite faire, mais tu devrais te diriger vers les regex (expressions régulières), c'est assez lourd mais pratique.
|
|
|
00
|
|
|
#5 | ||||||||
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Salut a tous,
je vais essayer de simplifier ma demande. Pour ce faire, je vais expliquer par fonction. La premiere chose que je souhaite faire c'est lire un fichier txt... Pour ça j'ai ce petit bout de code qui marche: Code :
La deja je sais pas comment faire pour dire a php de seulement ce centrer sur ce qui commence par =650 et passer du reste. Code :
J'essaye ça: Code :
Et dans ce champ je dois recuperer tout le texte qui se trouve entre el $a et le $9 C'est a dire: Code :
DBH - Gizarte Zientziak, Geografia eta Historia Code :
|
||||||||
|
|
00
|
|
|
#6 |
![]() ![]() Inscription : septembre 2010 Messages : 7 250 ![]() |
foreach pour parcourir un tableau
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Salut
foreach... avec la boucle for ça marche pareil?? J'ai avancé depuis le post de ce matin, je suis a la phase ou j'arrive pas a isoler le string entre $a et $9... Tu connais l'astuce pour faire ça? |
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : septembre 2010 Messages : 7 250 ![]() |
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#9 | ||||
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Ok alors selon le web que tu m'envoie j'ai changé le code a ceci:
Code :
La je bloque. Voici un output: Code :
|
||||
|
|
00
|
|
|
#10 | ||
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
J'essaie ceci mais ça donne erreur:
Code :
Code :
PHP Notice: Undefined variable: mival in C:\test.php on line 7
|
||
|
|
00
|
|
|
#11 |
![]() ![]() Inscription : septembre 2010 Messages : 7 250 ![]() |
on utilise preg pas ereg, je vais regarder ton truc cette aprem
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#12 | ||
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
Je tatone la,
j'ai reussi a isoler presque 100% bien la chaine: avec ceci J'utilise juste une ligne dans $data au lieu de parcourir tout le fichier, pour tester: Code :
J'obtient ceci: Premiere observation, j'ai dû remplacer les $ dans la chaine car php me disait: variable $a non definie. Donc pas de soucis, je peux changer le fichier source ou faire un replace. Ensuite reste a enlever les 2 premiers caracteres de la chaine le "\a" |
||
|
|
00
|
|
|
#13 | ||||
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
J'arrive a faire presque ce que je voulais faire grace a ceci:
d'abord je fais un sed pour changer le $a et $9 pour chaque =650 car php pense que c'est une variable: Code :
Je voudrais maintenant avoir les meme strings mais sans les ||a et ||9 Code :
|
||||
|
|
00
|
|
|
#14 |
![]() ![]() Inscription : septembre 2010 Messages : 7 250 ![]() |
j'ai relu ton premier poste
d’où sort : 90004537 ? d'où sorte les fichiers ? quelle est le format final que tu souhaites avoir ? c'est toujours 650 ?
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#15 | ||||||||
|
Membre habitué
![]() Luis Inscription : avril 2006 Messages : 436 ![]() |
En fait y'a 2 fichiers et je dois combiner les 2.
C'est a dire ajouter un ID dans le fichier 2 a partir d'un ID qui se trouve dans le fichier 1. D'ou le premier pas qui consiste a isoler la chaine commune des 2 fichiers: avec mon petit script: Code :
Code :
donc le but final est: lire le fichier 2, (il ressemble a ça) Code :
et trouver l'ID du fichier 1 pour toutes les valeur identiques (fichier2 =150 egale a fichier1 =650) Par exemple, dans le fichier 1 j'ai ceci: comme tu vois, dans le fichier 1 j'ai une egalité avec le fichier2 champs =150 et =650 il faut copier l'ID du fichier1 et le coller dans le fichier2 en ajoutant un string fix devant resultat final: Generer un fichier2 comme ceci: Code :
|
||||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com