用于比较两个变量的PHP函数?

用于比较两个变量的PHP函数?,php,Php,是否有PHP函数用于比较两个字符串变量和第三个参数是比较运算符和返回布尔值 例如: $string1 = "Foo"; $string2 = "Bar"; $result = php_function_for_comparing($string1, $string2, "=="); //return boolean 提前感谢。您可以使用eval函数,但请注意,eval执行传递给它的任何php代码。因此,您必须正确地验证提供给该方法的任何输入 或不引用之前的值: $operator1 = "==

是否有PHP函数用于比较两个字符串变量和第三个参数是比较运算符和返回布尔值

例如:

$string1 = "Foo";
$string2 = "Bar";
$result = php_function_for_comparing($string1, $string2, "=="); //return boolean
提前感谢。

您可以使用eval函数,但请注意,eval执行传递给它的任何php代码。因此,您必须正确地验证提供给该方法的任何输入

或不引用之前的值:

$operator1 = "==";
$operator2 = "!=";

$string1 = "foo"; 
$string2 = "bar";

//this passes the strings $string1 and $string2 - which will THEN 
//be evaluated to the values.
if (eval('return $string1' . $operator1 . '$string2;')){ 
   echo "Equal!";
}

if (eval('return $string1' . $operator2 . '$string2;')){
   echo "Different!";
}

是的,很多,你可以很聪明地使用它们作为布尔值

//Calculate the percentage of similarities
similar_text ($first , $second, $percent )

levenshtein($str1, $str2) //Calculate Levenshtein distance between two strings

soundex($str) //Calculate the soundex key of a string
你可以用eval

function compare($a, $b, $op) {
  return eval('return $a ' . $op . ' $b;');
}

为了回答我的问题,我创建了一个简单的函数,没有使用PHPEVAL

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;
    }       
}

当然,您需要创建一个递归算法来计算字符串并将其转换为PHP可读代码。

直接比较它们很容易吗$结果=$string1===$string2。有这样一个函数的原因是什么?我想他希望能够将闭包作为第三个参数传递不,PHP中没有这样的函数。这是你需要自己编码的东西。我读了这个问题。你在问是否有一个php函数比较两个字符串,然后返回一个布尔值true或false,对吗?没有。。。再试一次。读所有的单词。处理所有单词,然后尝试回答我需要第三个参数是比较运算符,比如==,=,>,@EdwardManda你现在明白了吗?是的,我明白你的意思了。没有内置的php函数可以做到这一点。您必须自己创建一个。我同意不使用eval,甚至php.net也不鼓励使用它。谢谢您的建议,但我确实不同意使用eval。它可以工作,但除了安全问题外,还很难清理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!";