2013-02-23 110 views
0

下面是我的應用程序相關的代碼.....谷歌的地理編碼API JSON的PHP解碼打破當響應包含「/」

<? 
$jsonData = file_get_contents($url); 
     $data = json_decode($jsonData, TRUE); 
     $lat = $data['results']['0']['geometry']['location']['lat']; 
     $lng = $data['results']['0']['geometry']['location']['lng']; 
     $formattedAddress = $data['results']['0']['formatted_address']; 
     $acomp = $data['results']['0']['address_components']; 
     foreach ($acomp as $acompArray) { 
      if (in_array("neighborhood", $acompArray["types"])) { 
       $neighborhood = $acompArray["long_name"]; 
      } 
     } 
$acomp = $data['results']['0']['address_components']; 
foreach ($acomp as $acompArray) { 
    if (in_array("neighborhood", $acompArray["types"])) { 
     $neighborhood = $acompArray["long_name"]; 
    } 
} 
?> 

下面是JSON響應從谷歌的地理編碼API(的一個說破例子)

{ 
    "results" : [ 
     { 
     "address_components" : [ 
      { 
       "long_name" : "3900", 
       "short_name" : "3900", 
       "types" : [ "street_number" ] 
      }, 
      { 
      "long_name" : "Winchell Avenue", 
      "short_name" : "Winchell Ave", 
      "types" : [ "route" ] 
     }, 
     { 
      "long_name" : "Oakland/Winchell", 
      "short_name" : "Oakland/Winchell", 
      "types" : [ "neighborhood", "political" ] 
     }, 
     { 
      "long_name" : "Kalamazoo", 
      "short_name" : "Kalamazoo", 
      "types" : [ "locality", "political" ] 
     }, 
     { 
      "long_name" : "Kalamazoo", 
      "short_name" : "Kalamazoo", 
      "types" : [ "administrative_area_level_2", "political" ] 
     }, 
     { 
      "long_name" : "Michigan", 
      "short_name" : "MI", 
      "types" : [ "administrative_area_level_1", "political" ] 
     }, 
     { 
      "long_name" : "United States", 
      "short_name" : "US", 
      "types" : [ "country", "political" ] 
     }, 
     { 
      "long_name" : "49008", 
      "short_name" : "49008", 
      "types" : [ "postal_code" ] 
     } 
    ], 
    ---A LOT MORE BUT DELETED THE IRRELEVANT PORTIONS--- 
} 

這個問題似乎與所有的鄰居「奧克蘭/溫切爾」的情況發生,我的理論是,它包含了這似乎讓它返回任何「/」 ...我如何解決這個問題?

+0

'/'應該被轉義。然而PHP json_decode通常沒有任何問題。 'print_r()'無論你有什麼。 – mario 2013-02-23 20:14:39

回答

-1
$json_url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=".$row2[lat].",".$row2[lng]."&sensor=true"; 
// Initializing curl 
$ch = curl_init($json_url); 

// Setting curl options 
curl_setopt_array($ch, $options); 

// Getting results                  
    $data = curl_exec($ch); 
    curl_close($ch); 

// parse the json response 
    $jsondata = json_decode($data,true); 
    $results = $jsondata['results'][0]; 
    $addr =$results['formatted_address']; 
+0

上面的代碼將允許您訪問第一個具有地址完整描述的'formatted_address'字段...... – user1973273 2013-10-14 22:38:09