从Google地图链接中提取纬度和经度
Supposing I had the following link to a google map: 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
I would like to extract only the latitude and longitude from the following link. I assume I would need to use regular expression to do this but I have no idea how to go about it.
The co-ordinates in this case would be 43.0828162,-79.0763516
我想从中仅提取纬度和经度 以下链接。 我假设我需要使用正则表达式来执行此操作,但我不知道如何去做。 p>
此情况下的坐标为43.0828162,-79.0763516 p > div>
I would use a simple RegX like this
preg_match('/@(\-?[0-9]+\.[0-9]+),(\-?[0-9]+\.[0-9]+)/', $url, $match );
You can see it here, using your url.
https://regex101.com/r/hD7lV0/1
just for sake of explaining it
- Match
@
Literal At sign one time - Match
-
, literal hyphen/minus?
one or none times - Match
[0-9]
,+
one or more times - Match
\.
literal.
decimal one time - Match
[0-9]
,+
one or more times - Match
,
, literal,
comma one time etc...
I would do.
<?php
$latLong = split(',',preg_match('/@([0-9\.-,]*?)\//',$url));
// $latLon = [lat, long] = $latLon[0],$latLom[1]
?>
- Match @ Symbol (as start of match)
- Any Number, Fullstop, minus or comma up-until the next '/' (escaped with '\')
- Split it into two parts on the ','
If needs be you can test it with
if (count($latLon) > 2){
die('Invalid URL Segment found.');
}
If you want to be really short with your regex
$latLong = split(',',preg_match('/@(.*?)\//',$url));