[英]PHP - if condition inside string
一个简单的问题要问,希望不要傻。
$var=0;
$condition="$var!=0";
if($condition) {
# do something #
}
else {
# do something else #
}
显然,那里的代码无法按预期工作。 是否有一种从字符串获取if条件的好方法? 还是我必须以某种令人不安的方式解析字符串?
编辑我没有很好地解释自己。 事实是字符串可以包含您可以想象的任何可能的条件:
我从xml文件中以字符串形式读取了这种情况,所以我不知道会发现什么。
eval()
函数是此处的简便方法。 例如:
if(eval($condition)) {
# do something #
}
else {
# do something else #
}
必须强调eval()
是邪恶的。 即使您确实知道自己在做什么,使用eval()
来使网站变得极度不安全也是非常容易的。 特别是,即使您确定该代码现在是安全的,但在代码的完全不同的部分中添加了一些功能之后,情况可能并非如此。
那就是说eval()
有其用途,特别是在诸如迁移脚本之类的快速且肮脏的一次性脚本中。
如果您要编写面向世界的网站,则在使用eval()
需要特别注意。 通常,必要的护理要比实施某些non- eval()
解决方案更加困难。
只是因为还没有人发布。 问问自己需要进行哪些比较。 如果他们正在执行简单的数学运算,则您可能希望在架构中包含以下内容。
<conditions>
<notEqual var="var" value="0" />
</conditions>
它允许您有多个条件,应该相对简单地进行解析并转换为php代码。
为什么不做:
$var = 0;
if ($var != 0){
# do something #
}
else {
# do something else #
}
编辑:甚至
$var = 0;
$condition = 0
if ($var != $condition){
# do something #
}
else {
# do something else #
}
$condition
的内容不是$var!=0
,而是0=0
(由于$
不能在双引号内转义( \\$
)。
您可以使用eval
函数执行此操作。
但是, eval
是邪恶的。 问问自己是否真的需要这样做。 如果还有其他方法,请采取。
好,您可以使用邪恶的Eval。 但是,如果您的条件实际上像您建议的那么简单,则可以使用正则表达式测试条件...不需要评估。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.