Url en xml et récupération des données en php
Résolu
stribouille
-
tryan44 Messages postés 1288 Date d'inscription Statut Membre Dernière intervention -
tryan44 Messages postés 1288 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- Url en xml et récupération des données en php
- Fuite données maif - Guide
- Url - Guide
- Xml download - Télécharger - Édition & Programmation
- Trier des données excel - Guide
- Sauvegarde des données - Guide
3 réponses
Salut,
A tester :
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');
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:
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');
?>
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.
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
}
}