Utiliser la fonction eval() php pour converti

Résolu
devMan Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   -  
 devMan -
Bonjour,
j'ai une chaine de caractere comme cella :
$machaine = ((val1 == val2) && (val3 == val4) && (val5 == val6));

puis je mets cette variable dans un test pour verifier s'elle est true ou non.
if ($maChaine == true ) {
     //traitement
}

le problem il considere le test toujour true ...
je veux une fonction pour convertir $maChaine en script php Pour être en mesure de la mettre dans le test.
j'ai pensé d'utiliser la fonction php eval() mais je ne sais pas comment ????

merci de m'aider
A voir également:

9 réponses

le père
 
ça dépend de l'endroit où se trouve le @. Il doit être avant une expression.
Qu'y a -t-il dans $maCahine ? (qui a encore changé de nom...)
Je note au passage que tu utilises $conditionIf dans ton eval et $condition dans ton test...
1
le père
 
Bonjour

Ta variable n'est pas une chaine, mais un booléen puisque c'est le résultat d'un test.
Et que sont ces val1, val2 etc...? Pas des variables, le nom devrait commencer par $. Des constantes ? définies comment ?

De plus, $machaine et $maChaine sont deux variables différentes. La casse compte pour les noms de variables
0
devMan
 
Bonjour,
merci de votre reponse,
pour les val...oui ce sont des variable $val1,$val2....
et pour les $machaine et $maChaine = problem de tapage..
en fait j'ai fait ça :
eval('$conditionIf = '.$maCahine.';');
//puis je fait
if ($condition == true) {
    //traitement
}

ça marche mais avec un problem de parse.
Si l'une des mes $val contient un '@' il genere une erreur :
<b>Parse error</b>:  syntax error, unexpected '@' in ..... : eval()'d code</b> on line <b>1</b><br />


merci de m'aider
0
devMan Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   15
 
Re-
pour @ il se trouve dans $maCaine et pour eval j'ai fait comme ça:
$conditionIf = "return(".$conditionIf .");" ;
            var_dump($conditionIf);
            var_dump(eval($conditionIf));
            if (eval($conditionIf))
0
le père
 
$maCaine : 4ème orthographe depuis le début. Je finirai par faire des remarques sur ta rigueur...
Dans ce code, tu ne fais plus le même eval que dans ton message précédent. On ne voit plus où apparaît $maCaine.
Si tu veux que je te dises pourquoi ton expression génère une erreur, donne moi cette expression. Je parle de la valeur de l'expression (la chaîne de caractères, ce que 'voit' eval), pas du code PHP qui te permet de l'obtenir.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
devMan Messages postés 74 Date d'inscription   Statut Membre Dernière intervention   15
 
Re-
merci pour votre reponse et je suis desole pour le nommage des variable.
j'ai fait une boucle sur un tableau afin d'avoit une chaine comme cella :
$maChaine = ((val1 == val2) && (val3 == val4) && (val5 == val6));


pour verifier si cette chaine et true ou bien false mais quand je tente de la mettre dans un test il la considrer comme une chaine pour cela j'ai tenté d'utiliser la fonction php eval().
mais avec cette dernier j'ai un problem avec @..
voila mon problem
0
le père
 
Tu me dis que tu as un problème avec un @
Je te demande quelle est la chaîne que tu passes à eval
Tu me réponds avec une chaîne qui ne contient pas @, qui soit dit en passant est celle du départ dont tu m'as dit que les val1, val2 étaient en fait des $val

Franchement, comment veux-tu que je te dise où est le problème alors que depuis le début tu ne m'as pas montré une seule fois la chaîne contenant un @ que tu passes à eval ?
0
devMan
 
Bonjour,
je pense que j'ai deja dite que j'ai un problem quand l'une de mes variable ($val1,$val2....) contient un '@'.
c a dire @ existe dans mes $val...
par exemple si j'ai $val1= test@test.fr ---> il genere une erreur de parser
0
le père
 
Ceci est ma dernière tentative pour essayer de t'aider
Tu as un problème avec l'utilisation d'une fonction eval
Pourrais-tu s'il te plaît me donner la valeur exacte de la chaîne que tu passes à eval et qui génère ce problème?
J'ai dit "la valeur exacte", c'est à dire la chaîne de caractères telle que eval la reçoit.
Pas une vague description du genre "quand il y a un @" ou quand "$val1=test@test.fr"
Y a-t-il quelque chose que tu ne comprends pas dans ma demande ? Le sens de "valeur" ? Le sens de "chaîne", le sens de "passer une valeur à une fonction" ?
0
devMan
 
Bonjour,
en fait j'ai trouvé la solution:

foreac ($listeObjet as àobjet) {
    if($i != 0) {
          $condition = $condition . " ". $operateurLogique . " ('$valeurA' == '$valeurB') " ;
   } else {
        $condition = " ('$valeurA' == '$valeurB') " ;
   }
        
   $i = $i + 1;
}
$condition = "return(".$condition .");" ;
echo $condition;
var_dump(eval($condition));
if (eval($condition))
      //des traitement
else
      //des traitement


merci de votre reponse
0