在PHP中将KML转换为数组
我在尝试使用在PHP中将KML转换为数组,php,kml,Php,Kml,我在尝试使用PHP语言将*.kml文件转换为数组时遇到了问题。 kml文件> 代码 $dom = new \DOMDocument(); $dom->loadXml($file); $xpath = new \DOMXPath($dom); $xpath->registerNamespace('kml', 'http://www.opengis.net/kml/2.2'); $result = array(); $places = $
PHP
语言将*.kml
文件转换为数组时遇到了问题。kml文件> 代码
$dom = new \DOMDocument();
$dom->loadXml($file);
$xpath = new \DOMXPath($dom);
$xpath->registerNamespace('kml', 'http://www.opengis.net/kml/2.2');
$result = array();
$places = $xpath->evaluate('//kml:Placemark', NULL, FALSE);
foreach ($places as $place) {
$coord = $xpath->evaluate('string(kml:LineString/kml:coordinates)',$place, FALSE);
$i = explode("\n", $coord);
$result = array(
'name' => $xpath->evaluate('string(kml:name)', $place, FALSE),
'coords' => explode("\n", $coord, count($i)
)
);
}
var_dump($result);
问题是当我尝试使用换行符delimeter分解字符串时,结果总是这样
而我想要这样的结果
有人能帮我解决问题吗?谢谢大家! 有不同的新行字符,而不仅仅是\r\n
-尝试使用类似于preg\u split('/\r/',$string)的东西代码>以捕获所有新行字符
有关\R
作用的更详细解释,请查看SO答案。'\R\n'
(在单引号之间)是:-文字反斜杠、字母R、文字反斜杠和字母n。这不是回车和换行。在单引号之间,不解释转义序列
另外:你确定换行序列是CRLF吗?它也可以仅为LF(很少仅为CR)
不管怎样,请尝试使用“\r\n”
,如果无法使用“\n”
(在双引号之间)
您可以修剪coords阵列:
<?php
function itemTrim(&$item) {
$item = trim($item);
}
$r = "
115.09031667,-8.81930500,64.500
115.09031500,-8.81925667,64.400
115.09033000,-8.81920167,64.300
115.09038167,-8.81911333,64.100
115.09042333,-8.81904000,64.000
115.09048000,-8.81896833,63.900
115.09053333,-8.81889167,63.800
115.09056167,-8.81882333,63.800
115.09059500,-8.81876667,63.800
115.09063500,-8.81872500,63.900
115.09067333,-8.81870167,63.800
";
$a = preg_split("/\r\n|\n|\r/", $r);
$b = array_walk($a, "itemTrim");
var_dump($a);
我已经更新了代码,结果出现了新问题。你可以在更新的网页上看到它question@Adi:你需要学习自己解决问题的基础知识,而不是问新问题。