Url en xml et récupération des données en php

Résolu/Fermé
stribouille - 6 nov. 2013 à 17:55
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 - 7 nov. 2013 à 20:01
Bonjour,

Dans une page php, je dois écrire un lien http qui pointe vers une page en xml.

Par exemple ceci:

http://www.mycobank.org/Services/Generic/SearchService.svc/rest/xml?layout=14682616000000161&filter=Name%20CONTAINS%20%22Candida%20albicans%22

Je voudrais pouvoir, à la volée, récupérer dans cette page web en xml le contenu présent entre les balises

<E4060>..</E4060>

et les afficher dans une page php (le fichier xml du dessus ne doit pas être visible par l'utilisateur qui clique sur le lien).

Comment faire s'il vous plait?

Un grand merci par avance.

A voir également:

3 réponses

tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 220
6 nov. 2013 à 19:15
Salut,

A tester :

function Affiche($url){
if ($ouverture=fopen($url, "rb")) {
if ($lecture=stream_get_contents($ouverture)){
$motif='#<E4060>(.*?)</E4060>#is';
preg_match_all($motif,$lecture,$sortie,PREG_PATTERN_ORDER);
//tableau
echo '<pre>';
print_r($sortie);
echo '</pre>';
/*Chaque tableau semble contenir la même chose et dispose de 8 sous-tableaux*/
/*On affiche donc que le résultat du 1er tableau*/
for($i=0; $i<=8;$i++){
/*Le sous-tableau 3 étant vide, on l'exclue*/
if($sortie[0][$i] != $sortie[0][3]){
echo $sortie[0][$i]."<hr/>";
}
}
return $lecture;
}
else{
return 'La page n\'a pas pu être scannée ';
}
}
else{
return 'La page n\'a pas pu être scannée ';
}
fclose($ouverture);
}

$Source = Affiche('http://www.mycobank.org/Services/Generic/SearchService.svc/rest/xml?layout=14682616000000161&filter=Name%20CONTAINS%20%22Candida%20albicans%22');

1
Bonsoir tyran44.
Merci pour ta réponse je vais tester demain cette solution que je n'aurais pas pu inventer.
Je ferais bien entendu un retour.
Bonne soirée.
0
Mince désolé je voulais dire tryan44...désolé pour la mauvaise correction automatique.
0
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 220
7 nov. 2013 à 07:56
Lapsus ou ironie :) ?
0
Juste un lapsus ^^.

La page récupérée est longueeeeee :

http://genome.jouy.inra.fr/cirm/bdd/syno.php

et je voudrais pouvoir récupérer les premières lignes ici car toutes autres sont identiques...




Array
(
[0] => Array
(
[0] => blablabla

}
}
0
Re,

C'est bon cela fonctionne; j'ai modifié ton code php (un très grand merci pour le patern que je n'aurais jamais trouvé seul).

Seul hic, dans le code source de la page php généré, tous les caractères sont en hexadécimal donc il faut les identifier et les enlever pour rendre l'affichage propre.

Voici le code complet:



<?php

function Affiche($url){
if ($ouverture=fopen($url, "rb")) {
if ($lecture=stream_get_contents($ouverture)){
$motif='#<E4060>(.*?)</E4060>#is';
preg_match_all($motif,$lecture,$sortie,PREG_PATTERN_ORDER);


// on remplace le caractère bizarre ? par un retour à la ligne.
$chaine=str_replace('≡','<br />',$sortie[0][0]);
// on remplace le caractère ; qui apparait en début de chaine (heureusement il n'y en a pas d'autre ouf) par rien.
$chaine=str_replace(';','',$chaine);
// pour enlever les <br /> qui sont en #$%@
$chaine=str_replace('<br />','',$chaine);
// on remplace le signe = par un retour à la ligne
$chaine=str_replace('=','<br />',$chaine);
echo $chaine;
//echo $sortie[0][0];

return $lecture;
}
else{
return 'La page n\'a pas pu être scannée ';
}
}
else{
return 'La page n\'a pas pu être scannée ';
}
fclose($ouverture);
}

$Source = Affiche('http://www.mycobank.org/Services/Generic/SearchService.svc/rest/xml?layout=14682616000000161&filter=Name%20CONTAINS%20%22Candida%20albicans%22');

?>

0
tryan44 Messages postés 1288 Date d'inscription mardi 24 janvier 2012 Statut Membre Dernière intervention 26 octobre 2014 220
7 nov. 2013 à 20:01
Content que ça fonctionne :). Bonne continuation.

Note : avec un header en utf-8, je n'avais aucun soucis de caractères.
0