2013-09-15 2 views
0

В PHP, у меня есть строка, содержащая LAT/LNG, такие как: (38.889373, -77.00279599999999)PHP Regex - получить строку между двумя символами (LAT/LNG)

Я хочу, чтобы извлечь первое число (лат), возвращая 38.889373. Отдельно хочу извлечь второе число (lng), возвращая -77.00279599999999.

Regex пинает мою задницу, каждый раз. Помогите оценить!

+1

нет рег ех необходимости взрываться запятой, обрезать \ подстроку удалить пространство \ скобки –

+0

Почему не взрываются() и дифферента() –

ответ

0
$string = '(38.889373, -77.00279599999999)'; 
// $string = str_replace('(','',$string); 
// $string = str_replace(')','',$string); 
$string = str_replace(array(')','('),'',$string); 


$string = explode(',',$string); 

for($i = 0; $i < count($string); $i++) { 
    echo $string[$i]; 
} 
+1

str_replace() принимает массив - лучше, чем назвав его дважды –

+0

Это работает как шарм ! Спасибо за вашу помощь в этом и извиниться за то, что так долго отмечали это как «решаемые». Очень признателен. –

0

Несмотря на все предложения, я действительно думаю, что регулярное выражение является самым простым способом. Я считаю, что мы можем предположить, что в строке/строке будут только два числа (широта и логарифм).

preg_match_all("/[\d.-]+/", $str, $matches); 

Массив пар (если есть несколько комплектов лат/долгота) находятся в $matches[0]. Затем вы можете использовать array_chunk($matches[0], 2).

+0

некоторые lat \ longs поставляются с N-S и E-W вместо положительных \ отрицательных –

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