Vérification d'une chaine de caractère _ php

Résolu/Fermé
amine_marc Messages postés 256 Date d'inscription dimanche 21 février 2010 Statut Membre Dernière intervention 11 avril 2016 - 9 avril 2015 à 10:48
amine_marc Messages postés 256 Date d'inscription dimanche 21 février 2010 Statut Membre Dernière intervention 11 avril 2016 - 9 avril 2015 à 15:29
Bonjour,
je veux tester une chaine de caractère si elle est sous la forme suivante a^b où a et b sont des nombres. C'est-à-dire, un programme près de ça:

$ch=2^3;
function f($ch)
{
  if($ch == ???)
     echo "Forme acceptable !";
  else
     echo "Fome non acceptable !";
}


veuillez me dire comme résoudre ce problème et merci d'avance.

1 réponse

animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 726
Modifié par animostab le 9/04/2015 à 13:26
salut
tu dois convertir chaque chiffre sous sa forme binaire (2 et 3) puis les comparer pour chaque decimale
quand c'est égal ca prend la valeur 0 (false) inégale la valeur 1 (true)
exemple

0101
0011
------
0110 ( false true true false)

donc rcherche la valeur binaire de 2 et 3 et compare les, le resultat obtenu sera ce que tu dois mettre après ==
Un petit merci vaut mieux qu'une grande ignorance !
Donc si votre sujet est résolu une réponse avec merci c'est pas de refus.
1
amine_marc Messages postés 256 Date d'inscription dimanche 21 février 2010 Statut Membre Dernière intervention 11 avril 2016 2
9 avril 2015 à 13:54
tout d'abord, merci animistab; mais je n'ai pas bien compris votre code!! Je pense que tu n'as pas compris également mon but de ce script.
En bref, j'essaie de vérifier si $ch est sous forme d'un alphanumérique (ex: 5^4) pour exclure les cas comme c^3 et b^5, etc.
0
animostab Messages postés 2829 Date d'inscription jeudi 10 mars 2005 Statut Membre Dernière intervention 11 novembre 2019 726
9 avril 2015 à 14:53
ok le truc c'est que $ch représente le resultat de comparaison des valeur binaire
donc tu devrais faire
$a = 2;
$b=3;
$ch=$a^$b;
après tu vérifie si $a et $b sont numériques
if ( is_numeric($a) && is_numeric($b) )

sinon recupérer la chaine $ch avec strval($ch) et comparer avec [0-9]*\^[0-9]*
0
amine_marc Messages postés 256 Date d'inscription dimanche 21 février 2010 Statut Membre Dernière intervention 11 avril 2016 2
9 avril 2015 à 15:29
c'est exactement ce que je cherchais. Merci bcp animostab
0