2014-09-26 45 views
0

我想解析PHP中的KML文件並使用JavaScript解析它。到目前爲止,我嘗試了不同的方法。我的問題是,我似乎無法從「xml」中刪除每一行換行符。用下面的方法,我可以強制所有XML在同一行,但未能從「<![CDATA[....閱讀PHP中的KML文件,強制它在一行中,解析它與parseKMLString谷歌地圖

$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文件。

+1

您的preg_replace正在查找確切的字符串'\ r \ n \ t +'。我認爲你想要尋找任何這些空白組合,即'/ [\ r \ n \ t +] /' – 2014-09-26 09:59:49

+0

這就是簡單的事情......這確實是解決方案。唯一剩下的是,我需要找出如何將字符串放入'',因爲它包含「以及'​​:) – 2014-09-26 10:06:34

+0

您需要刪除字符串的所有實例」,因爲它包含「?您可以使用' str_replace'(見下面的答案)或者將字符串添加到你的正則表達式中:'/([\ r \ n \ t +] |因爲它包含)/' – 2014-09-26 10:08:42

回答

1

你在preg_replace regex需要的空白字符的特定字符串:

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

我相當肯定要尋找任何這些字符,即

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

你可以還可以使用str_replace以及您正在尋找的一組空白實體:

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

除非速度是個問題,否則正則表達式更加靈活。