2009-09-04 8 views

Répondre

12

Voici un exemple simple qui utilise l'interface boucle et l'EEG.

$zip = 97219; 
$url = "http://www.webservicex.net/uszip.asmx/GetInfoByZIP?USZip=$zip"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

$result = curl_exec($ch); 

curl_close($ch); 

$xmlobj = simplexml_load_string($result); 

La variable $result contient XML qui ressemble à ce

<?xml version="1.0" encoding="utf-8"?> 
<NewDataSet> 
    <Table> 
    <CITY>Portland</CITY> 
    <STATE>OR</STATE> 
    <ZIP>97219</ZIP> 
    <AREA_CODE>503</AREA_CODE> 
    <TIME_ZONE>P</TIME_ZONE> 
    </Table> 
</NewDataSet> 

Une fois que le XML est analysé dans un objet SimpleXML, vous pouvez obtenir dans les différents noeuds comme ceci:

print $xmlobj->Table->CITY; 

Si vous voulez vous amuser, vous pouvez lancer le tout dans une classe:

class GetInfoByZIP { 
    public $zip; 
    public $xmlobj; 

    public function __construct($zip='') { 
     if($zip) { 
      $this->zip = $zip; 
      $this->load(); 
     } 
    } 

    public function load() { 
     if($this->zip) { 
      $url = "http://www.webservicex.net/uszip.asmx/GetInfoByZIP?USZip={$this->zip}"; 

      $ch = curl_init(); 
      curl_setopt($ch, CURLOPT_URL, $url); 
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

      $result = curl_exec($ch); 

      curl_close($ch); 

      $this->xmlobj = simplexml_load_string($result); 
     } 
    } 

    public function __get($name) { 
     return $this->xmlobj->Table->$name; 
    } 
} 

qui peut alors être utilisé comme ceci:

$zipInfo = new GetInfoByZIP(97219); 

print $zipInfo->CITY; 
2

J'utiliser le HTTP POST ou GET interfaces avec curl. Il semble que cela vous donne une bonne sortie XML propre que vous pouvez analyser avec simpleXML.

Quelque chose comme ce qui suit irait un long chemin (avertissement, totalement non testé ici):

$ch = curl_init('http://www.webservicex.net/uszip.asmx/GetInfoByZIP?USZip=string'); 

curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); 
$xml = curl_exec($ch); 
curl_close($ch); 
$parsed = new SimpleXMLElement($xml); 

print_r($parsed); 
+0

Je pense qu'il demande sur le format, mais Cory » lire les exemples présentés – dusoft