正则表达式从字符串中获取lat / lng

时间:2016-08-20 00:17:39

标签: php regex

我有一个这种格式的字符串。

" 1784_Anarchy +酿造+共〜单位+ 5 + +怀特豪斯农场+中心〜Stannington〜莫珀斯〜NE61 + 6AW_ ^ 55.13033〜-1.702607"

模式看起来像

preg_match_all("\^d+\", $map, $out, PREG_PATTERN_ORDER);

所以lat - \ ^ d + .d +? lng - \ ~d + .d +?

尝试获取纬度和长值 - lat:55.13033 lng:-1.702607

2 个答案:

答案 0 :(得分:2)

如果lat和lng字符串位置保持不变,这里有一个快速的方法。否则发布其他实例

$str = '1784_Anarchy+Brew+Co~Unit+5+Whitehouse+Farm+Centre~Stannington~Morpeth~NE61+6AW_^55.13033~-1.702607';

 preg_match_all("/(?<=[\^|\~])\-?([\d\.]+)/", $str, $matches);
 $lat = $matches[0][0];
 $lng = $matches[0][1];

 echo "lat: $lat, Lng: $lng";

 //output: lat: 55.13033, Lng: -1.702607

答案 1 :(得分:0)

以下正则表达式应该隔离坐标:

(-?\d{1,3}\.)\d{5,6}

内部()的块将匹配一个可选的' - '表示负LAT / LONG,后跟一组1到3位数(经度可以高达180),然后是'点'。

表达式的其余部分将匹配5到6位数(根据示例中的精度)。

只要搜索字符串或多或少与所述字符串保持一致,这应该有效:

Demo

希望这会有所帮助!!