Bonjour,
Je voudrais savoir s'il est possible de lire le contenu d'un fichier xml à partir d'une Url qui n'est pas situé sur le même serveur.
Merci.
Version imprimable
Bonjour,
Je voudrais savoir s'il est possible de lire le contenu d'un fichier xml à partir d'une Url qui n'est pas situé sur le même serveur.
Merci.
oui:
;)Code:$contents = file_get_contents($chceminentier)
Bien sûr, comme tout autre type de fichier. Liens vers la FAQ :
J'attire votre attention sur ce point comme mentionné dans les questions/réponses cités ci-dessus sur le fait que :
Si ce n'est pas votre cas, alors vous pouvez vous tourner vers d'autres alternatives comme CURL (un exemple figure dans la FAQ).Citation:
Il n'est possible de récupérer un fichier par son URI complète que si la directive allow_url_fopen est activée dans le php.ini.
Julp.
Pourrat-tu me donner le liens concernant la procédure avec curl car le allow_url_fopen est à off sur mon serveur.
Merci.
Comment récupérer le contenu d'un fichier avec cURL ? (phpinfo vous renseignera sur la disponibilité de cette bibliothèque).
Julp.
Ok, merci pour ces renseignements. Je vais essayer de les appliquer à mon cas.
Problème :
L'adresse est du type http://www.developpez.net/forums/sho...=1#post1617165
et pointe sur un fichier XML.
Je voudrais récuperer l'intégralité du code de la page mais on dirais que CURL ne me retourne que les valeurs comprise dans les balises XML.
PS : Mon code est le m^me que celui dans l'exemple cité juste avant. merci.
Vous ne feriez pas un (simple) echo par hasard ? Quel est votre code ? Obtenez-vous le même comportement en changeant de source ?Citation:
Envoyé par staive
Julp.
Désolé pour le délestage, vacances oblige.
Exactement je fais un 'simple' echo. voici le code :
Code:
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130 setlocale(LC_TIME, "fr_FR"); // ou "fr" $partner = ""; $ville = "SZXX0010"; $vname="Delémont"; $jours = 2; $url = "http://xoap.weather.com/weather/local/".$ville."?cc=*&unit=s&dayf=".$jours; // Conversion Fahrenheit->Celsius function f2c($t) { return round(($t-32)*5/9); } // Lecture d'un fichier XML function lit_xml($chaine,$isFile,$item,$champs) { // on lit le fichier ou la chaîne if($isFile) { $chaine = @file_get_contents($chaine); } if($chaine) { // on explode sur <item> $tmp = preg_split("/<\/?".$item.">/",$chaine); // pour chaque <item> for($i=1;$i<sizeof($tmp);$i++) // on lit les champs demandés <champ> foreach($champs as $champ) { $tmp2 = preg_split("/<\/?".$champ.">/",$tmp[$i]); // on ajoute au tableau $tmp3[$champ][] = trim(@$tmp2[1]); } // et on retourne le tableau return @$tmp3; } } //--------------- $ch = curl_init($url); //curl_setopt($ch,CRULOPT_URL,$url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_NOBODY, FALSE); $response = curl_exec($ch); curl_close($ch); $url=$response; //echo $url; //----------------- //$url="meteo/SZXX0010.xml"; // Extraction primaire $xml = lit_xml($url,true,"day d=.*",array("hi","low","part p=\"d\"","part p=\"n\"")); // Extraction des icones, messages et du taux d'humidité for($i=0;$i<$jours;$i++) { $tmp = preg_split("/<\/?icon>/",$xml["part p=\"d\""][$i]); $xml["icond"][$i] = $tmp[1]; $tmp = preg_split("/<\/?t>/",$xml["part p=\"d\""][$i]); $xml["altd"][$i] = $tmp[1]; $tmp = preg_split("/<\/?hmid>/",$xml["part p=\"d\""][$i]); $xml["hmid"][$i] = $tmp[1]; $tmp = preg_split("/<\/?icon>/",$xml["part p=\"n\""][$i]); $xml["iconn"][$i] = $tmp[1]; $tmp = preg_split("/<\/?t>/",$xml["part p=\"n\""][$i]); $xml["altn"][$i] = $tmp[1]; } ?> <STYLE type="text/css"> <!-- .titre { color: #000000 } .sstitre { color: #858586 } .Style2 { font-family: Arial, Helvetica, sans-serif; font-size: 10px; } .Style3 { color: #858586; font-family: Arial, Helvetica, sans-serif; font-size: 10px; } .Style4 {font-family: Arial, Helvetica, sans-serif; font-size: 10px; color: #000000; } .date { font-family: Verdana, sans-serif; font-size: 12px; font-style: normal; line-height: normal; font-weight: normal; color: #0493CF } --> </STYLE> <table width="100%"> <? for($i=0;$i<$jours;$i++) { ?> <tr> <td class=corps><table width="100%"> <tr> <td colspan=3 class="date"> <?=ucfirst(strftime("%A %d %B %Y",time()+$i*24*3600))?> </strong></font></td> </tr> <tr> <td width="352" class="date"><font color="#000000">Max: <?=($xml["hi"][$i]=="N/A")?"N/A":f2c($xml["hi"][$i])."°C"?> </font></td> <td width="295" class=Style4><font color="#000000">JOUR</font></td> <td width="318" class=Style4><font color="#000000">NUIT</font></td> </tr> <tr> <td class="Style4"><font color="#000000">Min: <?=($xml["low"][$i]=="N/A")?"N/A":f2c($xml["low"][$i])."°C"?> </font></td> <td rowspan=2 class="Style2"><font color="#000000"><img src="meteo/img/<?=$xml["icond"][$i]?>.png" alt="<?=$xml["altd"][$i]?>" width=40></font></td> <td rowspan=2 class="Style2"><font color="#000000"><img src="meteo/img/<?=$xml["iconn"][$i]?>.png" alt="<?=$xml["altn"][$i]?>" width=40></font></td> </tr> <tr> <td class="Style4"><font color="#000000">H%: <?=$xml["hmid"][$i]?> </font></td> </tr> </table></td> </tr> <? } ?> </table>
Dans ce cas éditez la source et ô magie vous verrez l'ensemble de votre document XML. (pour l'afficher tel qu'il est là il faut appliquer la fonction htmlentities par exemple).Citation:
Envoyé par staive
Dans cet appel il faut passer votre paramètre isFile à faux puisqu'il ne s'agit plus d'une URL ou d'un Fichier mais directement de la chaîne à traiter. (si j'ai bien compris la logique).Code:$xml = lit_xml($url,false,"day d=.*",array("hi","low","part p=\"d\"","part p=\"n\""));
Julp.
Effectivement, je cherchais du mauvais coté.
Je te remercie pour ton aide.
Ca fonctionne impeccable.