Comment analyser une chaîne de logique booléenne en PHP
Je suis en train de construire une classe PHP avec une fonction qui renvoie une chaîne de valeur tels que:
'true && true || false'
à une fonction membre public. (Cette chaîne est le résultat d'une expression régulière correspondant et de la propriété des recherches.) Ce que je voudrais faire est de PHP parse le retour de la logique et ont le publique précitée de retour de la fonction si le résultat booléen de l'analyse logique est vraie ou fausse.
J'ai essayé la fonction eval(), mais je n'ai pas de sortie du tout. J'ai essayé typecasting le booléen est de retour...mais il n'y a aucun moyen pour les opérateurs de transtypage...hehe Toutes les idées? (Laissez-moi savoir si vous avez besoin de plus d'informations.)
source d'informationauteur TheOddLinguist
Vous devez vous connecter pour publier un commentaire.
Viens de tomber sur cette question, mais étant assez mal à l'aise sur l'utilisation de
eval
j'ai décidé de continuer à chercher une meilleure solution.Ce que j'ai découvert est encore un autre merveilleux utilisation de PHP
filter_var
fonction, lors du passage dans leFILTER_VALIDATE_BOOLEAN
drapeau (il y en a).Ce "on line" de la fonction semble faire du bien à en toute sécurité la conversion d'une chaîne (ou autres) de l'objet à une valeur booléenne:
Et un peu de tests:
De sortie:
Je n'ai pas regardé assez profond, mais il est possible que cette solution repose sur
eval
en bas de la ligne quelque part, mais je serais encore côté avec l'aide de celles sur plaineeval
ing car je suppose quefilter_var
permettrait également de gérer la désinfection de l'entrée avant de la tuyauterie à traverseval
.eval()
fonctionnera parfaitement bien pour cela, mais n'oubliez pas que vous avez à dire de retourner quelque chose.Aussi assurez-vous de désinfecter toutes les entrées de l'utilisateur si de les mettre directement dans un
eval()
.Supposons la fonction eval() est un/ok bonne solution dans votre cas.
imprime
bool(true)
(string) true && true || false