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:
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\$aMartn, 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:
=650 \4$aLMH - Matematika
Ça peu aussi etre comme ceci:
1 2 3
| =650 \4$a Etika
=650 \4$aPatristika
=650 \4$aFilosofia |
ou comme ceci:
=650 \4$aMusika$x-Historia eta kritika
ou encore:
=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:
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:
=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:
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
Partager