欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php 字符串如何转换成if条件语句

程序员文章站 2022-06-17 20:59:05
...
例如:$condition = "2 == 2 && 3 == 5";
if ($condition) {
echo 1;
}
怎样把$condition 转换成if可识别的条件?直接这样判断会当成字符串常量,值为true


回复讨论(解决方案)

 if (eval("return $condition;")) {

$condition = "2=1 && (snb === snb || snb === hfu)";	if (eval("return $condition;")) {		echo 1;	}else {		echo 2;	}

eval() 可以解决纯数字的情况,字符串里有英文字母就会报错了,如果是上面的情况怎么办?

2=1 && (snb === snb || snb === hfu)
本身就不是合法的 php 条件表达式,不要说 eval,就是你直接写在 if 中都是要报错的

        $condition = "2=1 && (snb === snb || snb === hfu)";	if (eval("return $condition;")) {		echo 1;	}else {		echo 2;	}		if (2=1 && ('snb' === 'snb' || 'snb' === 'hfu')) {		echo 3;	}

呃 第一段的$condition和第二段if里面的内容是等价的吧 只是一个是字符串,一个是正常的if条件。
第二段运行没有问题的啊
第一段调用eval()会报一个常量未定义的错误,这里应该要转义?

        $condition = "2=1 && (snb === snb || snb === hfu)";	if (eval("return $condition;")) {		echo 1;	}else {		echo 2;	}		if (2=1 && ('snb' === 'snb' || 'snb' === 'hfu')) {		echo 3;	}

呃 第一段的$condition和第二段if里面的内容是等价的吧 只是一个是字符串,一个是正常的if条件。
第二段运行没有问题的啊
第一段调用eval()会报一个常量未定义的错误,这里应该要转义?
你的本意是('snb' === 'snb' || 'snb' === 'hfu') 但是 你却写成(snb === snb || snb === hfu) 连$符号都没有的变量,自然被理解成常量了,然而你并没有定义常量。

用变量转化一下,否则snb和hfu会被解释成常量。

$snb="snb";$hfu="hfu";    $condition = '2=1 && ($snb === $snb || $snb === $hfu)';    if (eval("return $condition;")) {        echo 1;    }else {        echo 2;    }

呃 已经解决了 谢谢大神们

呃 已经解决了 谢谢大神们

那把贴子结了吧。