2010-12-15 166 views
2

我想解析一個生成地圖的JavaScript代碼,以便我可以獲取它使用的座標(以下示例中的前2個長整型值)。PHP PCRE解析JavaScript代碼

的例子:

new OpenLayers.LonLat(-9.2009313718432200, 38.6318891148480000), 9); 

我使用的功能如下:

preg_replace('/LonLat\(([0-9 ,\-\.^\)]{0,})\)/i', '$1', $coords); 

沒有得到成功爲止。有什麼建議麼?

回答

2

嘗試使用正則表達式是這樣的:

preg_match('/LonLat\(([+-]?\d+(\.\d+)),\s*([+-]?\d+(\.\d+))/', $coords, $matches); 
$longitude = $matches[1]; 
$latitude = $matches[3]; 

我的PHP是一個有點生疏所以因人而異。你匹配一個浮點數表達是更爲令人費解的,它必須是,只是一個簡單的「可選的標誌其次是一些數字後跟一個小數點後面一些數字」就足夠了:

[+-]?\d+(\.\d+) 

而且不要忘記跳過$matches[2]$matches[4],那些將包含內部捕獲組(即您的示例中的「.20093137 ...」和「.6318891 ...」)。

而且不要爲preg_replace()這樣的事情煩惱,你只是在尋找東西,你並沒有試圖改變任何東西。您可以使用preg_replace(),但是您必須再次解析替換後的值以獲取兩部分。

+0

完美!請注意,比賽的「1」和「3」鍵是正確的,不像你提到的那樣,至少在我的PHP版本中。非常感謝你,溼婆祝福你,祝聖誕快樂:) – yoda 2010-12-15 06:18:17

+0

@yoda:謝謝,你對索引是正確的,所以我解決了他們的問題:http://php.net/manual/en/function.preg-match。 PHP,我的PHP是相當生疏的。 – 2010-12-15 06:26:40