2012-05-14 1 views
1

Мне нужно разобрать значения (47.624718,-122.356133) или пример или (лат, длинная) пара.Как анализировать значение (lat, long) php

Этот URL генерируется по следующей JS:

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

point вар порождается этим Js вар:

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

Очевидно, что эти значения различаются по размеру/длины на основе точки на Google карты, так как я могу разобрать это с помощью 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 –

Смежные вопросы