Как проанализировать строку булевой логики в PHP

Я создаю класс PHP с функцией члена парламента, не занимающего официального поста, которая возвращает строковое значение, такое как:

'true && true || false'

к общедоступной функции членства. (Эта строка является результатом некоторого соответствия regex и поисков свойства.), Что я хотел бы сделать, имеют PHP, анализируют возвращенную логику и имеют вышеупомянутый возврат государственной функции, является ли булевым результатом проанализированной логики TRUE или FALSE.

Я попробовал оценку (), но я не получаю вывода вообще. Я пытался преобразовать тип булевых возвратов..., но нет никакого способа преобразовать тип операторов... hehe Какие-либо идеи? (Сообщите мне, нужно ли Вам больше информации.)

10
задан TheOddLinguist 3 May 2010 в 21:09
поделиться

2 ответа

eval () отлично подойдет для этого, но помните, что вы должны сказать ему, чтобы он что-то возвратил.

$string = "true && true || false";
$result = eval("return (".$string.");"); // $result will be true

Также убедитесь, что вы дезинфицируете любые вводимые пользователем данные, если помещаете их непосредственно в eval () .

3
ответ дан 3 December 2019 в 14:24
поделиться

Давайте предположим, что eval() является нормальным/хорошим решением в вашем случае.

class Foo {
  private function trustworthy() {
    return 'true && true || false';
  }

  public function bar() {
    return eval('return '.$this->trustworthy().';');
  }
}

$foo = new Foo;
$r = $foo->bar();
var_dump($r);

prints bool(true)

2
ответ дан 3 December 2019 в 14:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: