-
-
Save arubacao/b5683b1dab4e4a47ee18fd55d9efbdd1 to your computer and use it in GitHub Desktop.
<?php | |
/** | |
* Validates a given latitude $lat | |
* | |
* @param float|int|string $lat Latitude | |
* @return bool `true` if $lat is valid, `false` if not | |
*/ | |
function validateLatitude($lat) { | |
return preg_match('/^(\+|-)?(?:90(?:(?:\.0{1,6})?)|(?:[0-9]|[1-8][0-9])(?:(?:\.[0-9]{1,6})?))$/', $lat); | |
} | |
/** | |
* Validates a given longitude $long | |
* | |
* @param float|int|string $long Longitude | |
* @return bool `true` if $long is valid, `false` if not | |
*/ | |
function validateLongitude($long) { | |
return preg_match('/^(\+|-)?(?:180(?:(?:\.0{1,6})?)|(?:[0-9]|[1-9][0-9]|1[0-7][0-9])(?:(?:\.[0-9]{1,6})?))$/', $long); | |
} | |
/** | |
* Validates a given coordinate | |
* | |
* @param float|int|string $lat Latitude | |
* @param float|int|string $long Longitude | |
* @return bool `true` if the coordinate is valid, `false` if not | |
*/ | |
function validateLatLong($lat, $long) { | |
return preg_match('/^[-]?(([0-8]?[0-9])\.(\d+))|(90(\.0+)?),[-]?((((1[0-7][0-9])|([0-9]?[0-9]))\.(\d+))|180(\.0+)?)$/', $lat.','.$long); | |
} | |
$tests = [ | |
'lat' => [ | |
'0.0','+90.0','-90.0','90.0','+45','-45','45','50','55.55','45,1','A',], | |
'long' => [ | |
'0.0', '180', '-180', '+180', '179.9', 'A', | |
], | |
'lat_long' => [ | |
'90.0,180.0', | |
'47.1,179.1', | |
'90.1a,180.1a' | |
] | |
]; | |
echo "\033[37;44m:::::::::::: Tests ::::::::::::\033[0m".PHP_EOL; | |
echo "\033[1mType:\t\tValue:\tResult\033[0m".PHP_EOL; | |
foreach ($tests['lat'] as $lat) { | |
echo "Latitude:\t$lat\t\t".((validateLatitude($lat)) ? "\033[32mMATCH\033[0m" : "\033[31mFAIL\033[0m").PHP_EOL; | |
} | |
foreach ($tests['long'] as $long) { | |
echo "Longitude:\t$long\t\t".((validateLongitude($long)) ? "\033[32mMATCH\033[0m" : "\033[31mFAIL\033[0m").PHP_EOL; | |
} | |
foreach ($tests['lat_long'] as $lat_long) { | |
$geo = explode(",", $lat_long); | |
echo "Lat,Long:\t$lat_long\t".((validateLatLong($geo[0],$geo[1])) ? "\033[32mMATCH\033[0m" : "\033[31mFAIL\033[0m").PHP_EOL; | |
} |
ghost
commented
Mar 9, 2020
- https://github.com/aliyilmaz/Mind/blob/master/src/Mind.php#L1449
- https://github.com/aliyilmaz/Mind/blob/master/tests/is_coordinate.php
- https://github.com/aliyilmaz/Mind/blob/master/tests/validate.php
I don't think this we work for wgs84 projection? like 384943.343,344343.004 if yes please suggest anyone perfect. thanks
I use this regex and it works correct:
latitude:
'regex:/^[-]?(([0-8]?[0-9])\.(\d+))|(90(\.0+)?)$/'
longitude:
'regex:/^[-]?((((1[0-7][0-9])|([0-9]?[0-9]))\.(\d+))|180(\.0+)?)$/'
Northings and eastings from Nigeria can use this 'regex:/^\d{1,6}(.\d{1,3})?$/'
I use this regex and it works correct:
latitude:
'regex:/^[-]?(([0-8]?[0-9])\.(\d+))|(90(\.0+)?)$/'
longitude:
'regex:/^[-]?((((1[0-7][0-9])|([0-9]?[0-9]))\.(\d+))|180(\.0+)?)$/'
i will try this on lat an long thanks
echo preg_match('/^[-]?(([0-8]?[0-9]).(\d+))|(90(.0+)?),[-]?((((1[0-7][0-9])|([0-9]?[0-9])).(\d+))|180(.0+)?)$/', '41.883551-82.702518');
I removed the comma and it still returns 1, is there a way to have it so it fails if no comma?
echo preg_match('/^[-]?(([0-8]?[0-9]).(\d+))|(90(.0+)?),[-]?((((1[0-7][0-9])|([0-9]?[0-9])).(\d+))|180(.0+)?)$/', '41.883551-82.702518');
I removed the comma and it still returns 1, is there a way to have it so it fails if no comma?
Maybe you should try and elaborate on what the problem is .
but it is not valid in the case of "--",
I used this regex but it accepted"--78798989898" case which is wrong, Can anyone suggest me something?
but it is not valid in the case of "--", I used this regex but it accepted"--78798989898" case which is wrong, Can anyone suggest me something?
can you tell me the format of the result you want to obtain?