阅读PHP中的KML文件,强制在一行中进行解析,使用谷歌地图的parseKMLString进行解析
Read KML-File in PHP , force it in one line, parse it with parseKMLString for Google Maps
我正在尝试用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);
除非速度是个问题,否则正则表达式更灵活。