我正在尝试使用函数验证纬度和经度。
这是我正在使用的功能:
// Function to validate latitude
function isValidLatitude($latitude){
if (preg_match("/^-?([1-8]?[1-9]|[1-9]0)\.{1}\d{1,6}$/", $latitude)) {
return true;
} else {
return false;
}
}
这就是我所说的:
// Check for the "latitude":
if (!empty( $_POST['geolat'])) {
if (isValidLatitude($_POST['geolat'])) {
$_SESSION['geolat'] = $_POST['geolat'];
} else {
$error_alert[] = "Find your location correctly";
}
} else {
$error_alert[] = "You didn't find your locaiton on google map";
}
但它不适合我。它始终是:
$error_alert[] = "Find your location correctly";
我的$_POST
数组如下所示:
Array
(
[rest_location] => Colombo
[geolat] => 6.929677319820927
[geolng] => 79.86519121166998
[submitted] => TRUE
)
1
有人可以告诉我这有什么问题吗?
谢谢。
答案 0 :(得分:1)
您的帖子价值 -
[geolat] => 6.929677319820927
与您使用的正则表达式不匹配。(小数点后允许1到6位数)
所以你可以改变你的正则表达式 -
^-?([1-8]?[1-9]|[1-9]0)\.{1}\d{1,20}$
^^ Changed from 6 to 20
或强>
将您的geolat
值更改为十进制后最多6位数
$_POST['geolat']) = floor($_POST['geolat']) * 1000000)/1000000
答案 1 :(得分:0)
将您的功能更改为以下内容:
function isValidLatitude($latitude){
if (preg_match("/^-?([1-8]?[1-9]|[1-9]0)\.{1}\d+$/", $latitude)) {
return true;
} else {
return false;
}
}
即,{1,6}
表示只允许1到6个数字+
表示允许1或任意数量的数字