从Google地图链接中提取纬度和经度

时间:2016-09-06 23:57:16

标签: php regex

假设我有以下链接到谷歌地图: https://www.google.com.gh/maps/place/Niagara+Falls/@43.0828162,-79.0763516,17z/data=!4m15!1m9!4m8!1m0!1m6!1m2!1s0x89d34307412d7ae9:0x29be1d1e689ce35b!2sNiagara+Falls,+NY+14303,+United+States!2m2!1d-79.0741629!2d43.0828162!3m4!1s0x89d34307412d7ae9:0x29be1d1e689ce35b!8m2!3d43.0828162!4d-79.0741629

我想从以下链接中仅提取纬度和经度。我假设我需要使用正则表达式来执行此操作,但我不知道如何去做。

本案的坐标为43.0828162,-79.0763516

2 个答案:

答案 0 :(得分:3)

我会使用像这样的简单RegX

preg_match('/@(\-?[0-9]+\.[0-9]+),(\-?[0-9]+\.[0-9]+)/', $url, $match );

你可以在这里看到它,使用你的网址。

https://regex101.com/r/hD7lV0/1

只是为了解释它

  • 匹配@文字符号一次
  • 匹配-,字面连字符/减号?一次或不一次
  • 匹配[0-9]+一次或多次
  • 匹配\.文字.小数一次
  • 匹配[0-9]+一次或多次
  • 匹配,,文字,逗号一次 等...

答案 1 :(得分:1)

我愿意。

var myBox1 = +$( 'input[name=tax2]:checked' ).val(); //taxes value
var myBox2 = +document.getElementById('partstotalvalue').value; //parts total 
  • 匹配@符号(作为比赛开始)
  • 任何数字,Fullstop,减号或逗号 - 直到下一个'/'(用'\'转义)
  • 在','
  • 上将其分成两部分

如果需要,您可以使用

进行测试
<?php
    $latLong = split(',',preg_match('/@([0-9\.-,]*?)\//',$url));
    // $latLon = [lat, long] = $latLon[0],$latLom[1]
?>

如果你想与你的正则表达式相比很短

if (count($latLon) > 2){
    die('Invalid URL Segment found.');
}