好吧,我有一个我称之为大量的经度和纬度坐标列表。也就是说,我也有一些来源,我拉这些坐标。其中一些来自get/post方法,这可能会导致我的网站/服务潜在的安全漏洞。所以我试图找出如何通过PHP验证经度和纬度。我想通过preg_match正则表达式的东西。但我可能是错的,也许有人会建议一个更简单的方法。我已经尝试了我自己的概念,我已经尝试了各种互联网brew的概念,试图找到一个正则表达式模式,将验证这些为我通过preg_match(或类似的,如果你有一个更好的建议,我是所有的耳朵)。
我最后一次失败的尝试之前,终于屈服,来到这里是.
preg_match('^(\-?\d+(\.\d+)?),\s*(\-?\d+(\.\d+)?)$', $geoResults['latitude']))
字符串
这会产生“preg_match()[function.preg-match]:No ending "^”found“作为我的错误。最后几次尝试我已经尝试产生了这个错误,所以我不知道它是什么或意味着什么。
8条答案
按热度按时间bkkx9g8r1#
这是一个有点老的问题,但无论如何,我在这里发布我的解决方案:
字符串
我假设你在这里用正则表达式从正则表达式中分离出lat.。如果你只想检查lat.或lat.,这里是正则表达式;
纬度Rgx:
型
Rgx for degree.:
型
下面是一个改进的在线演示:https://regex101.com/r/bV5fA1/1
5f0d552i2#
在匹配序列的开头和结尾添加正斜杠,使其成为有效的正则表达式语法:
字符串
对于您是否使用正则表达式(regex)的问题,在这种情况下,使用正则表达式(PCRE
preg_match()
)是保护您的网站的最佳方法。当匹配变量复杂字符串排列时,正则表达式是要走的路。开发人员通常会转向正则表达式来匹配静态字符串,如'abc'。当strpos()
或str_replace()
是更好的选择时。bvn4nwqk3#
为什么不使用现代和单元测试的Assertion库呢?
Value Object类示例:
字符串
使用方法:
型
PHP8.2更新:
型
9fkzdhlc4#
我也想验证纬度和经度,结果如下:
-90.0000-90.0000
字符串
-180.0000-180.0000
型
我用PCRE测试了here。
ioekq8ef5#
正则表达式
字符串
vecaoik16#
验证Latitude的功能
字符串
验证经度的函数
型
xtfmy6hx7#
它是真实的工作unicum解决方案在net“-90.0000-90.0000
字符串
对于&lat=90.000000 &lon=180.000000:
型
vsmadaxz8#
这些看起来不太准确,因为:
纬度在-90到90度之间
经度在-180到90度之间
和
正则表达式中的
\d
匹配超过[0-9]同样,一个完整的库只是为了一些正则表达式似乎不符合逻辑...
所以我建立并测试了:
字符串