Regex Longitude

Regex Longitude - PHP - Programmation

Marsh Posté le 24-03-2014 à 16:31:15    

Bonjour,
 
Je suis entrain de finir une partie d'un gros projet Web et pour éviter toute mauvaise insertions dans la base de donnée j’utilise les regex pour vérifier si le contenu de ma variable ressemble bien à ce que je souhaite.
 
Pas de soucis pour les mails, les chiffres ou date mais par contre pour la longitude comme on me demande de la saisir impossible de le faire ou de le trouver.
 
Si quelqu'un pouvais me débloquer ça serait sympas.
 
La longitude doit être compris entre 0 et 180 avec la précision East ou West
 
Exemple : 30.2 W
 
Merci


---------------
Made you your own sentence without believing that of the others...
Reply

Marsh Posté le 24-03-2014 à 16:31:15   

Reply

Marsh Posté le 24-03-2014 à 16:53:09    

Ben déjà, ça dépend du format de saisie :
30.2 W
30.2 O
-30°20'
-30.333333
 
Le plus simple est de passer par les coordonnées décimales WGS84 (donc ici, -30.33333).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 25-03-2014 à 08:41:45    

Bonjour,
 
Déjà merci de ta réponse.
J'ai donnée un exemple ce serait plutôt du style de tes 2 premier exemple (30.2 W 30.2 O).
 
Je ne connais pas du tout les coordonnées dont tu parle.
S'agit-il d'un standard compatible avec PHP et/ou MySQL?


---------------
Made you your own sentence without believing that of the others...
Reply

Marsh Posté le 25-03-2014 à 09:48:01    

Le WGS84 c'est un système de coordonnées couramment utilisé par les GPS.

Reply

Marsh Posté le 25-03-2014 à 10:15:21    

Par contre je sais pas si vous aviez compris c'est pas une longitude récupéré via une position GPS mais une coordonnée saisie via un formulaire ( car sensé être fixe )


---------------
Made you your own sentence without believing that of the others...
Reply

Marsh Posté le 25-03-2014 à 10:25:54    

Ben ça change rien, c'est juste une façon différente de représenter une coordonnées : en degrés/minutes/secondes ou en valeur décimale.
 
Je pense que ça te serait utile de connaître quelques bases de la géodésie, sinon, tu risques de faire des boulettes au niveau des calculs :
http://fr.wikipedia.org/wiki/Syst% [...] C3%A9sique
 
Pour info, si tu ne peux changer ton formulaire de saisie, c'est facile de passer d'un représentation à une autre. Ex pour passer de la représentation degrés/minutes/secondes en décimale :

Code :
  1. function convertDMSToDecimal($Value, $Type = 'LAT', $Round = 6)
  2. {
  3.     $Sign = 1;
  4.     switch(strtoupper($Type))
  5.     {
  6.         case 'LNG':
  7.             if (stripos($Value, 'O') !== FALSE)
  8.             {
  9.                 $Sign = -1;
  10.             }
  11.             break;
  12.  
  13.         case 'LAT':
  14.         default:
  15.             if (stripos($Value, 'S') !== FALSE)
  16.             {
  17.                 $Sign = -1;
  18.             }
  19.             break;
  20.     }
  21.  
  22.     $ArrayTmp = explode("°", $Value);
  23.     $Degrees = $ArrayTmp[0];
  24.  
  25.     $ArrayTmp = explode("'", $ArrayTmp[1]);
  26.     $Minuts = $ArrayTmp[0];
  27.  
  28.     $ArrayTmp = explode("'", $ArrayTmp[1]);
  29.     $Seconds = $ArrayTmp[0];
  30.  
  31.     $fCoordGM = $Degrees + ($Minuts / 60) + ($Seconds / 3600);
  32.     $fCoordGM = $Sign * $fCoordGM;
  33.  
  34.     return round($fCoordGM, $Round);
  35. }


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed