阅读PHP中的KML文件,强制在一行中进行解析,使用谷歌地图的parseKMLString进行解析

Read KML-File in PHP , force it in one line, parse it with parseKMLString for Google Maps

本文关键字:parseKMLString 谷歌地图 一行 阅读 文件 KML 中的 PHP      更新时间:2023-09-26

我正在尝试用PHP解析一个KML文件,并使用JavaScript进行解析。到目前为止,我已经尝试了不同的方法。我的问题是,我似乎无法删除"xml"中的每一个换行符。使用以下方法,我可以在一行中强制所有XML,但未能从"<![CDATA[...."中删除空格

$dom = new DOMDocument();
$dom->preserveWhitespaces = false;
$dom->load("FILE-URL goes here");
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//text()') as $domText) {
    $domText->data = trim(str_replace("'r'n","",$domText->nodeValue));
}
$dom->formatOutput = true;
$string = $dom->saveHTML();

在我的下一次尝试中,我能够将所有内容转换为字符串,但无法从中删除任何换行符:

$xml = simplexml_load_file("FILE-URL goes here", 'SimpleXMLElement', LIBXML_NOCDATA);
$string = (string)$xml->asXML();
print_r(trim(preg_replace("/'r'n't+/","",$string)));

删除中断对于执行以下JS代码是必要的:

geoXml.parseKmlString('<?php print(STRING FROM ABOVE) ?>');

不幸的是,我无法将文件下载到服务器上,所以我被绑定到上面的内容。此外,我不能使用PHP来显示地图。KML文件本身是一个普通的谷歌地图KML文件。

preg_replace中的正则表达式正在查找一个特定的空白字符字符串:

preg_replace("/'r'n't+/","",$string);

我很确定你想查找这些字符中的任何一个,即

preg_replace("/['r'n't+]/", "", $string);

您还可以将str_replace和您要查找的空白实体数组一起使用:

$ws = array("'r", "'n", "'t");
$newstr = str_replace($ws, "", $string);

除非速度是个问题,否则正则表达式更灵活。