我试图用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文件本身是一个普通的Google-Maps-KML文件。
答案 0 :(得分:1)
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);
除非速度是一个问题,否则正则表达式更灵活。