2012-05-14 44 views
1

我需要解析(47.624718,-122.356133)或example或(lat,long)對的值。如何解析(lat,long)的值php

即由下面的JS生成的URL:

var html = \"<b>\" + name + \"</b> <br/>\" + address + \"<br><br>\" + \"<a id='myLink' href='result.php?\"+point+\"'>Professors here</a>\"; 

由此產生的point VAR js的變種:

var point = new GLatLng(parseFloat(markers[i].getAttribute(\"lat\")),parseFloat(markers[i].getAttribute(\"lng\"))); 

顯然,這些值的大小/長度基於在谷歌點變化地圖,所以我如何解析這個使用PHP獲取,之前的任何內容以及除()之外的,之後的所有內容變爲兩個變量?

感謝

+0

快速注:\」在這裏不需要...... –

+0

什麼是你輸入字符串看起來像嗎? – Halcyon

回答

1
php > preg_match("/(-?[0-9]+(.[0-9]+)?),(-?[0-9]+(.[0-9]+)?)/","(42.3,-59.0)",$matches); print_r($matches); 
Array 
(
    [0] => 42.3,-59.0 
    [1] => 42.3 
    [2] => .3 
    [3] => -59.0 
    [4] => .0 
) 
php > 

的指標進行排序一樣,因爲這樣的括號嵌套。只需使用索引1和3

1

可以更簡明地寫那麼,但卻是容易遵循這樣

$latlon = "(42.3,-59.0)"; 
list($lat, $lon) = string_to_lat_lon($latlon); 

function string_to_lat_lon($string) { 
    $string = str_replace('(', '', $string); // remove leading bracket 
    $string = str_replace(')', '', $string); // remove trailing bracket 
    return explode(',', $string); 
} 
+1

雖然只能匹配一對,但用正則表達式可以更改爲preg_match_all –