/****************************************** * 解析XML格式的字符串 * @param string $str * @return 解析正确就返回true,否则返回false *******************************************/ function xml_parser($str){ $xml_parser = xml_parser_create(); if(!xml_parse($xml_parser,$str,true)){ xml_parser_free($xml_parser); return false; }else { return true; } } /******************************************** * @取得GPX文件,返回一个数组 * @$filename: 文件名 *******************************************/ private function readGPX($filename) { $xmlDoc = new DOMDocument(); $data=@file_get_contents($filename); //$isok = strpos($data,"<?xml"); $isok = $this->xml_parser($data); $result = array(); if($isok == true){ if($xmlDoc->load($filename)){ $XMLTrkseg = $xmlDoc->getElementsByTagName('trkseg')->item(0); if(count($XMLTrkseg->getElementsByTagName('trkpt')) >= 1){ foreach($XMLTrkseg->getElementsByTagName('trkpt') as $trkpt){ $ele=""; $time = ""; $speed = ""; $lat = ""; $lon = ""; try{ $eles = $trkpt->getElementsByTagName("ele"); $ele = $eles->item(0)->nodeValue; }catch(Exception $e){ } try{ $times = $trkpt->getElementsByTagName("time"); $time = $times->item(0)->nodeValue; if($time !=""){ $time = str_replace("T"," ",str_replace("Z","",$time)); } }catch(Exception $e){ } try{ $speeds = $trkpt->getElementsByTagName("speed"); if(isset($speeds->item(0)->nodeValue)) $speed = $speeds->item(0)->nodeValue; }catch(Exception $e){ } try{ $lat = $trkpt->getAttribute("lat"); }catch(Exception $e){ } try{ $lon = $trkpt->getAttribute("lon"); }catch(Exception $e){ } $x = array("ele"=>$ele,"time"=>$time,"speed"=>$speed,"lat"=>$lat,"lon"=>$lon); $result[] = $x; } } } } return $result; }