Utiliser la fonction eval() php pour converti

Résolu/Fermé
devMan Messages postés 74 Date d'inscription jeudi 10 décembre 2009 Statut Membre Dernière intervention 16 septembre 2010 - 10 déc. 2009 à 10:15
 devMan - 11 déc. 2009 à 12:22
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

ç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
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
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 jeudi 10 décembre 2009 Statut Membre Dernière intervention 16 septembre 2010 15
10 déc. 2009 à 17:37
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
$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 jeudi 10 décembre 2009 Statut Membre Dernière intervention 16 septembre 2010 15
10 déc. 2009 à 17:53
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
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
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
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
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