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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
=LDR  01228nam  2200301 b 4500
=001  00000000000001
=005  20090429:10082000
=008  060403\2004\\\\\\\\\\\\\\\\\\\\\\\\baq
=008  120114s9999\\\\xx\\\\\\\\\\\\000\0\und\d
=019  \\$aM-34416-2004
=020  \\$a84-667-3834-7
=027  \\$a11100
=024  \\\$a9
=100  1\$aFerrero, Luis
=245  10$aMatematika$b :2:  Irakasleentzako materiala$c / Luis Ferrero, María del Carmen Jiménez, María Gregoria Martín
=260  \\$aMadrid$b : Anaya-Haritza$c, 2004
=300  \\$a4 bolumen dituen karpeta  (159, 31, 39, 95 or.)$c ; 32 x 26 cm
=440  \0$aApain eta dotore
=500  \\$a2004.10.19
=505  0\$a1. bolumena: Proposamen didaktikoa$a -- 2. bolumena: Programazioa$a -- 3. bolumena: Ebaluazioa$a -- 4. bolumena: Aniztasunaren tratamendua
=521  0\$a2.maila
=650  \4$aLMH - Matematika
=700  1\$aJimenez, Maria del Carmen
=700  1\$aMart��n, María Gregoria
=856  \\$u http://www.anaya.es$z Argitaletxearen web-orria
=856  \\$u http://www.hezkuntza.ejgv.euskadi.net/r43-573/eu/contenidos/informacion/dih6/eu_15733/adjuntos/8466738347.pdf$z Aurkibidea
=952  \\$p1000001$8LH$d05/04/06$aEK$bEK$oI LH2 MAT 1 04$eANA$s05/04/06
=998  \\9
 
=LDR  01239nam  2200373 b 4500
=001  00000000000003
=005  20081212:09412200
...
et ainsi de suite.

l'exercice consiste a parser le champ 650 du fichier data:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
=650  \4$aLMH - Matematika
Ça peu aussi etre comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
=650  \4$a Etika
=650  \4$aPatristika
=650  \4$aFilosofia
ou comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
=650  \4$aMusika$x-Historia eta kritika
ou encore:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
=650  \4$a Haurren heziketa$j-Ipuinak$j-Haur eta gaztentzako liburuak
Les champs 650 sont composés de sous champs visibles par des lettres.
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
..MARC..
TITN
     15
LD05
     n
LD06
     a
LD07
     m
LD18
     b
T001
     00000000000006
T005
     20091214:11502100
T008
     060403s2005    espa   c      000 1 baq c
T019
...
T650
     ' 4''a' Haurren heziketa'j'-Ipuinak'j'-Haur eta gaztentzako liburuak'ZZ0004537'
..MARC
Voyez dans le fichier keys, j'ai aussi un champs 650 (T650) et il termine par un numero...C'est ce numero que je soouhaite recuperer.

Dans notre exemple ça serait:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
=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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?
if (!$fp = fopen("cata.txt","r")) {
echo "Echec de l'ouverture du fichier";
exit;
}
else {
	while(!feof($fp)) {
	// On récupère une ligne
		$Ligne = fgets($fp,255);
 
	// On affiche la ligne
		echo $Ligne;
 
	// On stocke l'ensemble des lignes dans une variable
		$Fichier .= $Ligne;
	}
	fclose($fp); // On ferme le fichier
}
 
?>
J'aurais besoin de quelque clefss s'il vous plait.
Cordialement