PHP comment comparer des chiffre a 2 point (version)

PHP comment comparer des chiffre a 2 point (version) - PHP - Programmation

Marsh Posté le 21-02-2012 à 09:18:17    

Bonjour à tous.
 
Surement un truc tout con comme d'hab mais je seche depuis un moment la donc j'appel a l'aide.
j'ai besoin de faire des tests de supériorité de version de navigateur. Je recupère bien toute mes infos dans une variable du genre
 
$navVersion
 
par exemple ma version de Firefox est la 10.0.2 donc $navVersion = 10.0.2
 
et je veux tester si le navigateur client (donc en l'occurence le mien) est supérieur a 3.5.2
 
or si je fais  

Code :
  1. if($navVersion > '3.5.2'){


 
j'ai l'impression que php s'y perd a cause des points.
 
une idée ? simple et rapide a mettre en place car l'application est déjà fonctionnelle faut juste que je modifie cette action la.
 
merci d'avance

Reply

Marsh Posté le 21-02-2012 à 09:18:17   

Reply

Marsh Posté le 21-02-2012 à 10:00:32    

Oui, quand on compare des chaines, "10" est inférieur à "3".
Donc il faut comparer des nombres.
 
Une conversion en nombre se fait en à peine deux lignes :

$tmp = explode(".", $navVersion);
$v = $tmp[0] * 100000 + $tmp[1] * 1000 + $tmp[2];


N.B. Je suppose que le troisième nombre ne dépasse pas 999 et que le deuxième ne déapasse pas 99.
 
Edit : + au lieu de *


Message édité par olivthill le 21-02-2012 à 10:53:00
Reply

Marsh Posté le 21-02-2012 à 10:35:00    

Merci beaucoup :)
cela fonctionne parfaitement maintenant je comprenais pas pourquoi et tu m'apprend donc par la meme occasion que 10 est inférieur à 3 pour des chaines de caractère :)
 
Je pense que tu t'es tromper dans ton code

Code :
  1. $v = $tmp[0] * 100000 + $tmp[1] * 1000 * $tmp[2];


 
mais plutot additionné $tmp[2] au lieu de le multiplier non ?
 

Code :
  1. $v = $tmp[0] * 100000 + $tmp[1] * 1000 + $tmp[2];


 
c'est ce que j'ai fait et ca marche comme ca  
 
Encore merci


Message édité par hyptnos le 21-02-2012 à 10:35:20
Reply

Marsh Posté le 21-02-2012 à 10:52:13    

Oui, désolé.

Reply

Marsh Posté le 21-02-2012 à 11:32:20    

methode version_compare() : http://php.net/manual/fr/function.version-compare.php (certes ça marche que sur 3 chiffres...)
 

Code :
  1. if (version_compare($navVersion, '3.5.2', '>') {
  2.    //
  3. }


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Marsh Posté le 21-02-2012 à 11:36:43    

Bon à savoir quand même merci :)
et oui 3 chiffre vu que c'est spécialement conçu pour les versions de PHP.

Reply

Sujets relatifs:

Leave a Replay

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