javascript - 在 PHP 中读取 KML 文件,将其强制写入一行,然后使用 Google map 的 parseKMLString 对其进行解析

标签 javascript php xml google-maps kml

我正在尝试用 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 来显示 map 。 KML 文件本身是一个普通的 Google-Maps-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);

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

关于javascript - 在 PHP 中读取 KML 文件,将其强制写入一行,然后使用 Google map 的 parseKMLString 对其进行解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26056714/

相关文章:

php - file_get_contents()无法与YouTube一起使用

c# - 读取复杂的 XML 属性

java - 使用 Jersey 解析 XML 中的复杂对象

javascript - 如何使用 Immutable.js 在嵌套 Map 中添加新的键/值对

javascript - 我可以将 Canvas 图像居中吗

php - MySQL 多表查询和结果

java - XML 差异与合并

javascript - OnChange 表单验证 react

javascript - 我怎样才能在 Ember 中输出一个字符串,同时它仍然被 handlebars 解释?

php - Mysql 存储过程未按预期运行