好吧,我有一个庞大的经纬度坐标列表。也就是说,我也有一些来源可以从中提取这些坐标。其中一些来自 get/post 方法,这可能会导致我的站点/服务中存在潜在的安全漏洞。所以我想弄清楚如何通过 PHP 验证经度和纬度。我在想通过 preg_match 的正则表达式。但我可能是错的,也许有人会建议更简单的方法。我已经尝试了我自己的概念,并且尝试了各种互联网 brew 概念,试图找到一个正则表达式模式,通过 preg_match 为我验证这些模式(如果你有更好的建议,我会洗耳恭听)。
在最终屈服并来到这里之前,我最后一次失败的尝试是..
preg_match('^(\-?\d+(\.\d+)?),\s*(\-?\d+(\.\d+)?)$', $geoResults['latitude']))
这会产生“preg_match() [function.preg-match]: No ending delimiter '^' found ” 作为我的错误。我尝试的最后几次尝试产生了该错误,所以我不知道它是什么或意味着什么。
最佳答案
这是一个有点老的问题,但无论如何我在这里发布我的解决方案:
preg_match('/^[-]?(([0-8]?[0-9])\.(\d+))|(90(\.0+)?);[-]?((((1[0-7][0-9])|([0-9]?[0-9]))\.(\d+))|180(\.0+)?)$/', $geoResults['latlng']);
我在这里假设你 split 了纬度。从液化天然气。用分号。如果你只想检查纬度。或者只有lng。这是正则表达式;
纬度的 Rgx:
/^[-]?(([0-8]?[0-9])\.(\d+))|(90(\.0+)?)$/
lng 的 Rgx.:
/^[-]?((((1[0-7][0-9])|([0-9]?[0-9]))\.(\d+))|180(\.0+)?)$/
这是一个改进的在线演示: https://regex101.com/r/bV5fA1/1
关于php验证十进制格式的纬度/经度字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7549669/