Чтобы ответить на мой вопрос, я создал простую функцию без использования php eval().
function variable_comparison($condition = "==", $var1, $var2 = false){
if($condition == "is_empty")
return empty($var1);
else if($condition == "is_filled")
return !empty($var1);
else if($condition == "==")
return $var1 == $var2;
else if($condition == "!=")
return $var1 != $var2;
else if($condition == ">")
return $var1 > $var2;
else if($condition == "<")
return $var1 < $var2;
else if($condition == ">=")
return $var1 >= $var2;
else if($condition == "<=")
return $var1 <= $var2;
else if($condition == "in_array")
return in_array($var1, $var2);
else if($condition == "contains")
return strpos($var1, $var2);
else if($condition == "starts_with")
return substr($var1, 0, strlen($var2)) === $var2;
else if($condition == "ends_width"){
$length = strlen($var2);
return !$length || substr($var1, - $length) === $var2;
}
}
Эта функция очень полезна, когда вы пишете основную условную логику и сохраняете ее как жало.
Пример условной логики строка:
$string_logic = "{if post_[foo]<!=>post_[bar]?post_[bar]:Defalut Value Here!}";
Тот же результат, как:
echo ($_POST["foo"] != $_POST["bar"]) ? $_POST["bar"] : "Default Value Here!";
Но, конечно, нужно создать рекурсивный алгоритм для оценки строку и преобразовать его в PHP читаемый код.
Сравнивая их напрямую, нужно легко? '$ result = ($ string1 === $ string2)'. В чем причина такой функции? – Barry
Я предполагаю, что он хочет, чтобы иметь возможность пройти закрытие в качестве третьего аргумента –
Нет, такой функции в PHP нет. Это то, что вам нужно, чтобы закодировать себя. –